资源描述:
《数据结构实验报告栈进制转换.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.数据结构试验报告栈的应用——进制转换程序姓名班级学号算法步骤:1.定义栈与建立空栈typedefstruct{int*base;int*top;intstacksize;}Stack;intInitStack(Stack*s){s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!s->base){exit(OVERFLOW);}s->top=s->base;s->stacksize=STACK_INIT_SIZE;returnOK;}2.入栈程序intPush(Stack*s,int*e){if(s->top
2、-s->base>=STACK_INIT_SIZE){s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));if(!s->base){exit(OVERFLOW);}s->top=s->base+STACKINCREMENT;}*s->top++=*e;returnOK;}..3.出栈程序intPop(Stack*s,int*e){if(s->top==s->base){returnERROR;}*e=*--s->top;returnOK;}4.主函数与进制转化voidmai
3、n(){intN;inta;inte;Stacks;InitStack(&s);Pop(&s,&e);Push(&s,&e);InitStack(&s);printf("请输入十进制数:");scanf("%d",&N);printf("要将N转化为几进制?");scanf("%d",&a);while(N){e=N%a;Push(&s,&e);N=N/a;}while(s.base!=s.top){Pop(&s,&e);printf("%d",e);}free(s.base);system("pause");}3.源程序#include#incl
4、ude#include..#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#defineOK1#defineERROR0#defineOVERFLOW-1#defineTRUE1#defineFALSE-1typedefstruct{int*base;int*top;intstacksize;}Stack;intInitStack(Stack*s){s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!s->base){exi
5、t(OVERFLOW);}s->top=s->base;s->stacksize=STACK_INIT_SIZE;returnOK;}intPush(Stack*s,int*e){if(s->top-s->base>=STACK_INIT_SIZE){s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));if(!s->base){exit(OVERFLOW);}s->top=s->base+STACKINCREMENT;}*s->top++=*e;returnOK;}intP
6、op(Stack*s,int*e)..{if(s->top==s->base){returnERROR;}*e=*--s->top;returnOK;}voidmain(){intN;inta;inte;Stacks;InitStack(&s);Pop(&s,&e);Push(&s,&e);InitStack(&s);printf("请输入十进制数:");scanf("%d",&N);printf("要将N转化为几进制?");scanf("%d",&a);while(N){e=N%a;Push(&s,&e);N=N/a;}while(s.base!=s.top){P
7、op(&s,&e);printf("%d",e);}free(s.base);system("pause");}..调试与体会1.调试结果..2.体会这次数据结构作业我选择了做进制转换,首先我觉得这个比较有实际意义,其次我觉得做迷宫比较难。这次主要是学习如何用栈,栈自动分配变量,以及函数调用时所使用的一些空间。通过编写这次程序,提高了对栈的理解,自我查找与学习交流能力,这次编写程序,自己通过结合课本知识编写了出来。但是这次暴露出自己函数调用还是有一些问题的,通过同学的帮忙解决了很小但很严重的一个问题。这次,我对数据结构和C语言也有了更多地理解。.