欢迎来到天天文库
浏览记录
ID:51708815
大小:50.45 KB
页数:8页
时间:2020-03-15
《栈的顺序表示-参考代码.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、//*******************************************////C语言版数据结构-顺序栈的实现//Author:CHENQ.L//2013-10-16//Ver1.0//*******************************************//#include#includetypedefintSElemType;#defineOVERFLOW-2#defineOK1#defineERROR-1#defineFALSE0typedef
2、intStatus;#defineStack_INIT_SIZE80//顺序栈的长度#defineStack_INCREMENT3//顺序栈的增长步长typedefstruct{SElemType*Base;//栈底指针SElemType*Top;//栈顶指针intStack_size;//栈的大小}SqStack;//栈初始化操作StatusInit_Stack(SqStack&S){S.Base=(SElemType*)malloc(Stack_INIT_SIZE*sizeof(SElemType));//分配存储空
3、间if(!S.Base)//分配不成功exit(OVERFLOW);S.Top=S.Base;//将栈底指针=栈顶指针,表示空栈S.Stack_size=Stack_INIT_SIZE;//初始化栈的长度returnOK;}//取栈顶元素StatusGetTop(SqStackS,SElemType&e){if(S.Top==S.Base)//判断是否为空栈returnERROR;elsee=*(S.Top-1);//非空栈,读栈顶元素returnOK;}//将数据存入栈,即放入栈顶指针所指向的区域,使栈顶+1Statu
4、sPush(SqStack&S,SElemTypee){if((S.Top-S.Base)>=S.Stack_size)//是否超过事先分配的存储空间{S.Base=(SElemType*)realloc(S.Base,(S.Stack_size+Stack_INCREMENT)*sizeof(SElemType));//重新申请空间if(!S.Base)exit(OVERFLOW);S.Top=S.Base+S.Stack_size;//改变栈顶指针S.Stack_size+=Stack_INCREMENT;//改变栈
5、长}*S.Top++=e;//写入数据到栈顶returnOK;}//StatusPop(SqStack&S,SElemType&e){if(S.Top==S.Base)returnERROR;e=*--S.Top;returnOK;}StatusClearStack(SqStack&S){inte,i=0;if(S.Top==S.Base)returnERROR;while(S.Top!=S.Base){Pop(S,e);i++;printf("第%d个栈顶元素:%d",i,e);}returnOK;}intEmptyS
6、tack(SqStackS){if(S.Base==S.Top)return1;elsereturn0;}voidTen2r(intn,intr){SqStacks;intm=n;if(Init_Stack(s)==OK){while(m!=0){Push(s,m%r);m/=r;}printf("转换后的数据为:");while(s.Top!=s.Base){Pop(s,m);printf("%4d",m);}printf("");free(s.Base);}elseprintf("错误提示:将10进制数%d转换为
7、%d进制数失败!",n,r);}//回文:指顺读和倒读都一样的词语//重新定义一个字符栈,按栈的操作进行初始化,入栈;弹栈和原数据的第一个元素开始比较,//如果相等,则继续弹栈,比较第二个,中间某次比较不等,则说明不是回文。//最终结果判定指向字符串的指针=' '且栈空,表示是回文structCharStack{char*Base;//栈底指针char*Top;//栈顶指针intStack_Size;//栈的大小};intPalindrome(char*str){CharStacks;char*p=str;inti
8、=0;s.Base=(char*)malloc(Stack_INIT_SIZE*sizeof(char));if(!s.Base){printf("错误提示:不能申请内存空间,判断失败!");exit(OVERFLOW);}s.Top=s.Base;s.Stack_Size=Stack_INIT_SIZE;for
此文档下载收益归作者所有