




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
。#include #include #include /函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2/Status 是函数的类型,其值是函数结果状态代码typedef int Status;typedef int SetElemType;typedef SetElemType ElemType;#include tou.h#include #include typedef char SElemType; / 栈的元素类型#define STACK_INIT_SIZE 100 / 存储空间初始分配量 #define STACKINCREMENT 10 / 存储空间分配增量 / 栈的顺序存储表示 P46 typedef struct SqStack SElemType *base; / 在栈构造之前和销毁之后,base的值为NULL SElemType *top; / 栈顶指针 int stacksize; / 当前已分配的存储空间,以元素为单位 SqStack; / 顺序栈/ 构造一个空栈S。int InitStack(SqStack *S) / 为栈底分配一个指定大小的存储空间 (*S).base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if( !(*S).base ) exit(OVERFLOW); / 存储分配失败 (*S).top = (*S).base; / 栈底与栈顶相同表示一个空栈 (*S).stacksize = STACK_INIT_SIZE; return 1;/ 若栈S为空栈(栈顶与栈底相同的),则返回1,否则返回0。int StackEmpty(SqStack S) if(S.top = S.base) return 1; else return 0;/ 插入元素e为新的栈顶元素。int Push(SqStack *S, SElemType e) if(*S).top - (*S).base = (*S).stacksize) / 栈满,追加存储空间 (*S).base = (SElemType *)realloc(*S).base, (*S).stacksize + STACKINCREMENT) * sizeof(SElemType); if( !(*S).base ) exit(0); / 存储分配失败 (*S).top = (*S).base+(*S).stacksize; (*S).stacksize += STACKINCREMENT; *(*S).top)+=e; / 这个等式的+ * 优先级相同,但是它们的运算方式,是自右向左 return 1;/ 若栈不空,则删除S的栈顶元素,用e返回其值,并返回1;否则返回0。int Pop(SqStack *S,SElemType *e) if(*S).top = (*S).base) return 0; *e = *-(*S).top; / 这个等式的+ * 优先级相同,但是它们的运算方式,是自右向左 return 1;/ 销毁栈S,S不再存在。int DestroyStack(SqStack *S) free(*S).base); /释放栈底的空间,并置空 (*S).base = NULL; (*S).top = NULL; (*S).stacksize = 0; return 1;/ 把S置为空栈。int ClearStack(SqStack *S) (*S).top = (*S).base; /栈底栈顶相同为空栈 return 1;/ 返回S的元素个数,即栈的长度。int StackLength(SqStack S) / 栈顶指针减去栈底指针刚好等于长度,因为栈顶指针指向当前栈 / 顶元素的下一个位置。 return S.top - S.base;/ 若栈不空,则用e返回S的栈顶元素,并返回1;否则返回0。int GetTop(SqStack S,SElemType *e) if(S.top S.base) *e = *(S.top-1); / 栈顶指针的下一个位置为栈顶元素 return 1; else return 0;/ 从栈底到栈顶依次对栈中每个元素调用函数visit()。int StackTraverse(SqStack S,int(*visit)(SElemType) while(S.topS.base) visit(*S.base+); printf(n); return 1;int visit(SElemType c) printf(%d ,c); return 1;#include toutou.hint main() int j,n,num; SqStack s; SElemType e; / 创建一个顺序栈。 if(InitStack(&s) = 1) printf(顺序栈创建成功!n); / 查看栈的长度。 printf(栈的长度是%dn, StackLength(s); / 查看栈是否为空。 printf(栈空否:%d(1:空 0:否)n,StackEmpty(s); / 初始化栈。printf(输入数据个数 :);scanf(%d,&n);printf(输入数据 :);for(j = 1; j = n; j+)scanf(%d,&num);Push(&s, num); printf(栈中元素依次为:); StackTraverse(s,visit); Pop(&s,&e); printf(弹出的栈顶元素 e=%dn,e); GetTop(s,&e); printf(栈顶元素 e=%d 栈的长度为%dn,e,StackLength(s); ClearStack(&s); printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南许昌市经发控股集团有限公司社会招聘拟聘人员考前自测高频考点模拟试题参考答案详解
- 2025年安庆医药高等专科学校招聘高层次人才5人考前自测高频考点模拟试题及答案详解(易错题)
- 2025广东高校毕业生三支一扶计划招募3000人模拟试卷及答案详解(易错题)
- 2025年皖南医学院第二附属医院高层次招聘22人模拟试卷有完整答案详解
- 2025年中国广核集团春季校园招聘笔试题库历年考点版附带答案详解
- 2025年蚌埠市东方人力资源招聘30人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025江苏徐州市泉山国有资产投资经营有限公司部门负责人选聘2人(二)模拟试卷附答案详解(黄金题型)
- 2025广西桂林市第十九中学招聘初中语文代课教师1人考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025南通醋酸纤维有限公司招聘36人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025甘肃兰州市公安局城关分局招聘警务辅助人员30人模拟试卷及参考答案详解
- 制作污水处理设备合同
- 智能庭审系统技术方案
- 《阿米巴经营模式》课件
- 沥青路面施工-沥青混合料配合比设计
- 工程施工山区二级公路施工组织设计
- GB/T 3131-2001锡铅钎料
- GB/T 25775-2010焊接材料供货技术条件产品类型、尺寸、公差和标志
- GB/T 14454.2-2008香料香气评定法
- 《干部履历表》(1999版电子版)
- ISO 9001:2015新版质量管理体系详解与案例文件汇编
- 数据中心基础知识培训
评论
0/150
提交评论