堆栈实现进制转换.doc

堆栈实现进制转换.doc

ID:53873893

大小:69.50 KB

页数:2页

时间:2020-04-10

堆栈实现进制转换.doc_第1页
堆栈实现进制转换.doc_第2页
资源描述:

《堆栈实现进制转换.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include #include #defineSTACK_INIT_SIZE10 #defineSTACKINCREMENT1 typedefstruct//定义一个栈 { int*base;//栈底指针,构造前和销毁后,值为NULL intstacksize;//当前分配的存储空间,以元素为单位 int*top;//栈顶指针 }sqstack; voidinitstack(sqstack*S)//构造一个空栈 { (*S).base=(int*)malloc(sizeof(int)*STAC

2、K_INIT_SIZE);//分配一定大小的存储栈的空间 if(!(*S).base)exit(0);//分配空间失败 (*S).stacksize=STACK_INIT_SIZE;//给栈的长度赋值 (*S).top=(*S).base;//给栈的栈顶、栈底赋相同的地址 } intpop(sqstack*S)//出栈.若栈为空,则终止;否则,返回被删除栈的值e {inte; if((*S).base==(*S).top)exit(0);//判断栈是否为空,为空则终止函数调用 e=*(--(*S).top);//将出栈元素的值赋给临时

3、变量e returne;//返回出栈值 } voidpush(sqstack*S,inte)//入栈.插入值为e的新栈顶元素 { if((*S).top-(*S).base>=(*S).stacksize)//栈满.追加存储空间 { (*S).base=(int*)realloc((*S).base,sizeof(int)*((*S).stacksize+STACKINCREMENT));//给栈新增一个存储空间 if(!(*S).base)exit(0);//存储空间分配失败 (*S).top=(*S).base+(*S).stac

4、ksize;//栈顶的新位置 (*S).stacksize+=STACKINCREMENT;//栈的长度增加一个 } *(*S).top=e;//插入新元素 (*S).top++;//栈顶指向下一个地址 } intStackEmpty(sqstack*S)//判断栈是否为空;若为空,则返回值为0;否则,返回值为1 { if((*S).top==(*S).base) return0; elsereturn1; } voidmain() { inti,e;//定义两个基本变量 sqstackS;//定义一个名叫S的栈 initst

5、ack(&S);//构造空栈 scanf("%d",&i);//输入一个十进制数 while(i)//判断i是否为0;若为0,则退出循环;否则,就执行程序将十进制数对2求余的数依次入栈 { push(&S,i%2);//调用入栈函数 i=i/2; } while(StackEmpty(&S))//判断堆栈是否为空.若为空,则终止;若不为空,则循环输出转化为的二进制的数 { e=pop(&S);//调用出栈函数 printf("%d",e);//输出出栈的值 } }

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。