付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号姓名实验日期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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川绵阳汇鑫人力资源服务有限公司招聘服务人员1人备考题库含答案详解(典型题)
- 2026年4月广西百色市田阳区城镇公益性岗位人员招聘3人备考题库附答案详解(典型题)
- 2026浙江宁波东方海纳人力资源服务有限公司招聘6人备考题库含答案详解(典型题)
- 2026上海复旦大学公共卫生学院招聘科研实验中心科研助理岗位1人备考题库及1套参考答案详解
- 2026广东广州市天河区新蕾五星学校招聘2人备考题库附答案详解(研优卷)
- 2026年衢州市江山市赴武汉大学提前招聘新教师3人备考题库附答案详解(模拟题)
- 2026贵州黔西南州兴仁市潘家庄镇人民政府招聘专职消防人员4人备考题库及答案详解(易错题)
- 2026中国科学院广州地球化学研究所党务综合管理岗招聘1人备考题库及参考答案详解
- 2026广发银行福州分行春季校园招聘备考题库含答案详解(轻巧夺冠)
- 2026江西南昌安义县龙津中心幼儿园招聘教师2人备考题库附答案详解(考试直接用)
- 车辆安全教育课件
- DB6531T 001-2024春播花生水肥一体化栽培技术规程
- 铁路动车组运用维修规程(运规)
- 痔疮术后的个案护理
- QBT 102T-2023 甜菜糖厂设计规范 (正式版)
- 中建项目基础土方开挖施工专项方案
- 农村宅基地和建房(规划许可)申请表
- 坐标纸(A4纸直接打印就可用)
- 食品微生物题库及答案
- 外墙保温粉刷施工方案(优选.)
- 工程质量验收流程图
评论
0/150
提交评论