#include#include#include#in"> #include#include#include#in" />
用顺序栈进行栈的基本操作-C++源程序.doc

用顺序栈进行栈的基本操作-C++源程序.doc

ID:59342982

大小:43.00 KB

页数:5页

时间:2020-09-04

用顺序栈进行栈的基本操作-C++源程序.doc_第1页
用顺序栈进行栈的基本操作-C++源程序.doc_第2页
用顺序栈进行栈的基本操作-C++源程序.doc_第3页
用顺序栈进行栈的基本操作-C++源程序.doc_第4页
用顺序栈进行栈的基本操作-C++源程序.doc_第5页
资源描述:

《用顺序栈进行栈的基本操作-C++源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//main3-1.cpp检验bo3-1.cpp的主程序//#include"c1.h"#include#include#include#include#include//#include#include#include#include#include#include//提供宏va_start,va_arg和va_end,用于存取

2、变长参数表#defineTRUE1#defineFALSE0#defineOK1#defineERROR0//#defineINFEASIBLE-1没使用//#defineOVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSEtypedefintSElemType;//定义栈元素类型,此句要在c3-1.h的前面//#includ

3、e"c3-1.h"#defineSTACK_INIT_SIZE10//存储空间初始分配量#defineSTACK_INCREMENT2//存储空间分配增量structSqStack//顺序栈{SElemType*base;//在栈构造之前和销毁之后,base的值为NULLSElemType*top;//栈顶指针intstacksize;//当前已分配的存储空间,以元素为单位};voidInitStack(SqStack&S)//构造一个空栈S。{if(!(S.base=(SElemType*)malloc(STACK_INIT_SIZE*s

4、izeof(SElemType))))exit(OVERFLOW);//动态分配存储空间失败,则退出S.top=S.base;//栈顶指向栈底(空栈)S.stacksize=STACK_INIT_SIZE;//存储空间为初始分配量}voidDestroyStack(SqStack&S)//销毁栈S,S不再存在{free(S.base);//释放栈空间S.top=S.base=NULL;//栈顶、栈底指针均为空S.stacksize=0;//当前已分配的存储空间为0}voidClearStack(SqStack&S)//把栈S置为空栈{S.t

5、op=S.base;//栈顶指针指向栈底}StatusStackEmpty(SqStackS)//若栈S为空栈,则返回TRUE;否则返回FALSE{if(S.top==S.base)//空栈条件returnTRUE;elsereturnFALSE;}intStackLength(SqStackS)//返回栈S的元素个数,即栈的长度{returnS.top-S.base;}StatusGetTop(SqStackS,SElemType&e)//若栈S不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR{if(S.top>S.base)

6、//栈不空{e=*(S.top-1);//将栈顶元素赋给ereturnOK;}elsereturnERROR;}voidPush(SqStack&S,SElemTypee)//插入元素e为栈S新的栈顶元素{if(S.top-S.base==S.stacksize)//栈满{S.base=(SElemType*)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(SElemType));//追加存储空间if(!S.base)//追加存储空间失败,则退出exit(OVERFLOW);S.top

7、=S.base+S.stacksize;//修改栈顶指针,指向新的栈顶S.stacksize+=STACK_INCREMENT;//更新当前已分配的存储空间}*(S.top)++=e;//将e入栈,成为新的栈顶元素,栈顶指针上移1个存储单元}StatusPop(SqStack&S,SElemType&e){if(S.top==S.base)//栈空returnERROR;e=*--S.top;//将栈顶元素赋给e,栈顶指针下移1个存储单元returnOK;}voidStackTraverse(SqStackS,void(*visit)(SE

8、lemType))//从栈底到栈顶依次对栈S中每个元素调用函数visit(){while(S.top>S.base)//S.base指向栈元素visit(*S.base++);/

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

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

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