下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号姓名实验日期2012-12-6实验室计算机软件技术实验指导教师设备编号401实验内容栈的基本操作一实验题目实现栈的基本操作的代码实现二实验目的掌握栈的基本操作三实习要求(1)认真阅读书上给出的算法(2)编写程序并独立调试四、给出线性表的抽象数据类型ADTStack{
数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=1,2,…,n}约定a1为站定栈顶,an为栈底。基本操作:InitStack(&S); 操作结果:创造一个空栈SDestroyStack(&S);初始条件:栈S已存在操作结果:栈S被销毁ClearStack(&S);初始条件:栈S已存在操作结果:将S清为空栈StackEmpty(S);初始条件:栈S已存在操作结果:若S为空栈,则返回TURE,否则FALSEStackLength(S);初始条件:栈S已存在操作结果:返回S的元素个数,即栈的长度GetTop(S,&e);初始条件:栈S已存在且非空操作结果:用e返回S的栈顶元素Push(&S,e);初始条件:栈S已存在操作结果:插入元素e为新的栈顶元素Pop(&S,&e);初始条件:栈S已存在且非空操作结果:删除S的栈顶元素,并用e返回其值StackTraverse(S,visit());初始条件:栈S已存在且非空操作结果:从栈底到栈顶依次对S的每个数据元素调用函数visit()。一旦visit()失败,则操作失败五、详细设计1、给出本数据的存储结构定义及栈的定义#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineNULL0#defineOVERFLOW-2实现栈的抽象数据类型如下:链式存储实现的抽象数据类型如下:2.运算的函数声明:StatusInitStack(SqStack&S); //构造造一个空栈SStatusDestroyStack(SqStack&S);//销毁栈SStatusClearStack(SqStack&S);//重置栈SStatusStackEmpty(SqStackS);//判断栈S是否为空StatusStackLength(SqStackS);//求栈长StatusGetTop(SqStackS,SElemType&e);//用e返回栈顶元素StatusPush(SqStack&S,SElemTypee);//插入元素e为新的栈顶元素StatusPop(SqStack&S,SElemType&e);//删除栈顶元素,并用e返回其值StatusStackTraverse(SqStackS);//从栈底到栈顶依次调用visit函数3.给出操作实现的伪码StatusInitStack(SqStack&S){//构造一个空栈S S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); //存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE; returnOK;}//InitStackStatusDestroyStack(SqStack&S){//销毁栈S if(S.base!=NULL) { free(S.base); S.base=S.top=NULL; } S.stacksize=0; returnOK;}StatusClearStack(SqStack&S){//重置栈S S.base=S.top; returnOK;}StatusStackEmpty(SqStackS){//判断栈S是否为空 if(S.top==S.base) returnTRUE; else returnFALSE;}StatusStackLength(SqStackS){//求栈长 inti;SElemType*p; i=0; p=S.top; while(p!=S.base) { p--; i++; } returni; }//stackLengthStatusGetTop(SqStackS,SElemType&e){//用e返回栈顶元素 if(S.base==S.top) returnERROR; e=*(S.top-1); returnOK;}//GetTopStatusPush(SqStack&S,SElemTypee){//插入元素e为新的栈顶元素 if(S.top-S.base>=S.stacksize) {//栈满追加存储空间 S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top=S.stacksize+S.base; S.stacksize+=STACKINCREMENT; } *S.top++=e; returnOK;}//pushStatusPop(SqStack&S,SElemType&e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR if(S.top==S.base) returnERROR; e=*--S.top; returnOK;}//PopStatusStackTraverse(SqStackS){//从栈底到栈顶依次调用visit函数 SElemType*p; p=S.base; while(p!=S.top) { printf("%5d",*p); p++; } returnOK;}六、实验环境1.环境:宿舍。2.硬件:2048M内存,500G硬盘。 3.系统:Windows764位操作系统4.软件平台:MicrosoftVisualC++6.0简体中文版七、相关文件列表如下demo.cpp:主程序文件Stack.cpp:操作实现的算法Stack.h:函数声明Mydef.h:存储结构的定义八、程序的运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 价格策略与定价技巧
- 2025年度家用电梯定制设计与安装合同范本2篇
- 2025年度25吨汽车吊车租赁与施工现场卫生管理合同3篇
- 二零二五年度上市公司股权激励股权转让及代持协议3篇
- 生产车间消防知识培训
- 二零二五年度停车场保险服务合同6篇
- 二零二五年度打包机租赁与安装调试服务合同2篇
- 二零二五年度市场推广合同标的营销方案与推广渠道
- 重庆市2024-2025学年高一上学期期末联合检测语文试卷(含答案)
- 二零二五年度婚庆活动参与者权益保障合同样本3篇
- 国家开放大学1116《机电控制工程基础》
- 程琳-职业生涯分析与规划
- 仁爱英语九年级总复习教案
- 心电图基本知识PPT
- GB/T 5130-1997电气用热固性树脂工业硬质层压板试验方法
- FZ/T 01041-2014绒毛织物绒毛长度和绒毛高度的测定
- 中小学食材配送中心项目建设可行性研究报告
- 人体解剖上肢血管
- 精品解析浙教版科学 九年级上册 3.43 简单机械之机械效率 同步练习
- 夸美纽斯-大教学论-文本细读
- 日立多联机系统调试培训教材
评论
0/150
提交评论