栈的顺序表示-参考代码.doc

栈的顺序表示-参考代码.doc

ID:51708815

大小:50.45 KB

页数:8页

时间:2020-03-15

栈的顺序表示-参考代码.doc_第1页
栈的顺序表示-参考代码.doc_第2页
栈的顺序表示-参考代码.doc_第3页
栈的顺序表示-参考代码.doc_第4页
栈的顺序表示-参考代码.doc_第5页
资源描述:

《栈的顺序表示-参考代码.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

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

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

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