《顺序链表-栈.doc》由会员分享,可在线阅读,更多相关《顺序链表-栈.doc(3页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除#includeiostream.h#includestdio.h#includemalloc.htypedef int elementype;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct sqstackelementype *base;elementype *top;int stacksize; sqstack;/构造栈int stackinit(sqstack &s)int x;s.base=(elementype *)malloc(STACK_INIT_
2、SIZE*sizeof(elementype);if(!s.base)cout建立栈失败!endl;return 0; s.top=s.base;s.stacksize=STACK_INIT_SIZE;while(1)coutx;if(x=0) break;*s.top=x;s.top+;return 1;/返回栈顶元素int gettop(sqstack s,elementype &e)if(s.top=s.base)cout栈是空栈!=s.stacksize)s.base=(elementype *)realloc(s.base,(s.stacksize+STACKINCREMENT)*s
3、izeof(elementype);if(!s.base)cout申请空间失败!endl;return 0;s.top=s.base+s.stacksize;*s.top+=e;return 0;/删除栈顶元素int pop(sqstack &s,elementype &e)if(s.top=s.base)cout栈是空栈!endl;return 0;e=*-s.top;return 1;/清空栈int stackclear(sqstack &s)s.top=s.base;return 1;/判断栈是否为空 int stackempty(sqstack &s)if(s.top=s.base)c
4、out栈是空栈!endl;return 1;else cout栈不是空栈!endl;return 0;/栈的元素个数int stacklength(sqstack &s)int x;if(s.top=s.base)cout栈是空栈!endl;return 0;cout栈的长度为:s.top-s.baseendl;return 1;/输出栈 int stackdisplay(sqstack &s)int i;p=&(s.base);for(i=0;is.stacksize;i+) coutpendl;p+;coutendl;return 1;int main()sqstack s;int x,a
5、;elementype e;cout*endl; cout* 顺序栈的表示和实现 *endl; cout*endl; do cout*endl;cout* 菜单 *endl; cout* 1.建立栈 *endl; cout* 2.进栈 *endl; cout* 3.出栈 *endl;cout* 4.删除栈顶元素 *endl;cout* 5.清空栈 *endl;cout* 6.判断栈是否为空 *endl;cout* 7.栈的长度 *endl;cout* 8.输出栈的元素 *endl;cout* 0.退出 *endl;cout*endl;coutx;switch(x) case 1: stackinit(s); break; case 2: coute; push(s,e); break; case 3: gettop(s,e); break; case 4: pop(s,e); break; case 5: stackclear(s); break; case 6: stackempty(s); break; case 7: stacklength(s); break; case 8: stackdisplay(s); break; default: break; while(x!=0);return 1;【精品文档】第 3 页
限制150内