免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/ main3-1.cpp 检验bo3-1.cpp的主程序 /#includec1.h#include #include #include #include #include /#include #include #include #include #include #include / 提供宏va_start,va_arg和va_end,用于存取变长参数表 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 / #define INFEASIBLE -1 没使用 / #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int Boolean; / Boolean是布尔类型,其值是TRUE或FALSE typedef int SElemType; / 定义栈元素类型,此句要在c3-1.h的前面/ #includec3-1.h #define STACK_INIT_SIZE 10 / 存储空间初始分配量 #define STACK_INCREMENT 2 / 存储空间分配增量 struct SqStack / 顺序栈 SElemType *base; / 在栈构造之前和销毁之后,base的值为NULL SElemType *top; / 栈顶指针 int stacksize; / 当前已分配的存储空间,以元素为单位 ;void InitStack(SqStack &S) / 构造一个空栈S。 if(!(S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType) exit(OVERFLOW); / 动态分配存储空间失败,则退出 S.top=S.base; / 栈顶指向栈底(空栈) S.stacksize=STACK_INIT_SIZE; / 存储空间为初始分配量 void DestroyStack(SqStack &S) / 销毁栈S,S不再存在 free(S.base); / 释放栈空间 S.top=S.base=NULL; / 栈顶、栈底指针均为空 S.stacksize=0; / 当前已分配的存储空间为0 void ClearStack(SqStack &S) / 把栈S置为空栈 S.top=S.base; / 栈顶指针指向栈底 Status StackEmpty(SqStack S) / 若栈S为空栈,则返回TRUE;否则返回FALSE if(S.top=S.base) / 空栈条件 return TRUE; else return FALSE; int StackLength(SqStack S) / 返回栈S的元素个数,即栈的长度 return S.top-S.base; Status GetTop(SqStack S,SElemType &e) / 若栈S不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR if(S.topS.base) / 栈不空 e=*(S.top-1); / 将栈顶元素赋给e return OK; else return ERROR; void Push(SqStack &S,SElemType e) / 插入元素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=S.base+S.stacksize; / 修改栈顶指针,指向新的栈顶 S.stacksize+=STACK_INCREMENT; / 更新当前已分配的存储空间 *(S.top)+=e; / 将e入栈,成为新的栈顶元素,栈顶指针上移1个存储单元 Status Pop(SqStack &S,SElemType &e) if(S.top=S.base) / 栈空 return ERROR; e=*-S.top; / 将栈顶元素赋给e,栈顶指针下移1个存储单元 return OK; void StackTraverse(SqStack S,void(*visit)(SElemType) / 从栈底到栈顶依次对栈S中每个元素调用函数visit() while(S.topS.base) / S.base指向栈元素 visit(*S.base+); / 对该栈元素调用visit(), coutn; / 栈底指针上移1个存储单元 #define ElemType SElemType Status equal(ElemType c1,ElemType c2) / 判断是否相等的函数 if(c1=c2) return TRUE; else return FALSE; int comp(ElemType a,ElemType b) / 根据ab,分别返回-1、0或1 if(a=b) return 0; else return (a-b)/abs(a-b); void print(ElemType c) / 以十进制整型的格式输出元素的值 coutc; coutt; void print1(ElemType &c) / 以十进制整型的格式输出元素的值(设c为引用类型) coutc; void print2(ElemType c) / 以字符型的格式输出元素的值 coutc; void main() int j; SqStack s; SElemType e; InitStack(s); / 初始化栈s for(j=1;j=12;j+) Push(s,j); / 将值为j的栈元素入栈s中 cout栈中元素依次为n; StackTraverse(s,print); / 从栈底到栈顶依次对栈s中每个元素调用print()函数 Pop(s,e); / 弹出栈顶元素,其值赋给e cout弹出的栈顶元素e=; coute; coutendl; cout栈空否?; coutStackEmpty(s); coutt(1:空 0:否 ); GetTop(s,e); / 将新的栈顶元素赋给e coutn栈顶元素e=; coute; coutendl; cout栈的长度为; coutStackLength(s); ClearStack(s); / 清空栈s coutendl; cout清空栈后,栈空否?; coutStackEmpty(s); coutt(1:空 0:否 )n; DestroyStack(s); / 销毁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳航空航天大学《投资项目评估》2025-2026学年期末试卷
- 沈阳师范大学《欧美文学选读》2025-2026学年期末试卷
- 上海立信会计金融学院《服务管理》2025-2026学年期末试卷
- 上海海洋大学《幼儿语言教育与活动指导》2025-2026学年期末试卷
- 沈阳化工大学《解剖学基础》2025-2026学年期末试卷
- 上海工程技术大学《电子政务》2025-2026学年期末试卷
- 上海工程技术大学《广播电视新闻学》2025-2026学年期末试卷
- 山西华澳商贸职业学院《语用学概论》2025-2026学年期末试卷
- 山西科技学院《流行病学》2025-2026学年期末试卷
- 沈阳医学院《临床生物化学检验技术》2025-2026学年期末试卷
- 心电图基础知识与识图理论考核试题题库及答案
- 2025年四川省德阳市中考一模化学试题(含答案)
- 智能化弱电培训
- 杭州中好电子有限公司搬迁项目环评报告
- 悦己人生-大学生心理健康知到课后答案智慧树章节测试答案2025年春哈尔滨工业大学
- 学校工程设计任务书
- HAD 103-14-2023 核动力厂修改的管理
- 胃穿孔患者的护理
- 生物制品附录3培训
- 太阳能光伏板清洗安全事故应急预案
- 浅析实验研究法
评论
0/150
提交评论