




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实 验 报 告 成绩_学号1217417007姓名严梦授课教师黄欣专业12信计实验报告递交日期10/8实验题目两个栈共享向量(栈类型定义如下),它们的栈底分别设在向量的两端,编制程序完成共用栈操作。一 需求分析1程序实现的功能:完成共用栈操作。编制函数:1). 元素x进栈i函数; void push(seqstack *s,int i,datatype x);2). 栈i退栈,并返回原栈顶元素函数; datatype pop(seqstack *s,int i);3). 取栈i顶元素函数;datatype top(seqstack *s,int i);4).显示共用栈内容;void show(seqstack *s);5). 主函数完成功能:a). 开辟栈空间; b). 两个栈分别进栈若干个元素; c). 两个栈分别退栈或取栈顶若干个元素;d). 显示最后栈内容; 2数据输入的内容输入形式与范围 输入所创建的栈规模n1,n2;输入进栈数据,其类型是整型数;输入数据以回车符相隔。3数据输出的内容与形式 输出取栈或出栈数据,输出共用栈元素, 数据以回车符相隔。二. 主要算法的算法思想.1开辟栈空间:定义数组开辟静态空间存储共用栈2. 元素x进栈i函数:判断进栈i,判断栈i是否已满,不满则执行进栈操作,否则不执行。3. 栈i退栈,并返回原栈顶元素函数:判断退栈i,判断栈i是否已空,非空则执行退栈操作,否则不执行。4. 取栈i顶元素函数:判断取栈i,判断栈i是否为空,非空则执行取栈顶操作,否则不执行。5. 主函数:开辟栈空间;依次调用进栈函数、退栈函数;调用去栈顶函数、显示共用栈函数。三. 设计:1共用栈存储结构:顺序表。共用栈类型定义:typedef struct datatype vm; Int top0,top1; seqstack; /*单链表结点类型*/2参数表(列出所有的符号常量与全局变量)参数名数据传递方式数据内容传递所属函数m符号常量宏定义100所有函数3函数间的调用关系图4列出每个函数的函数声明、函数作用、函数值、形参内容与形式、主要算法步骤等1)元素x进栈i元素函数首部:void push(seqstack *s,int i,datatype x); 形参:seqstack *s,int i,datatype x 函数作用:将元素x压入栈i顶端 函数值:无 局部变量 无 进栈算法主要步骤:(a) 判别栈是否已满 if(s-top0top1);(b) 判别进栈i if(s-top0=i); (c) 栈顶位置移动 s-top0+;else s-top1-; (d) 元素x进栈 s-vs-top=x; 2)栈i退栈,并返回原栈顶元素函数 函数首部:datatype pop(seqstack *s,int i); 形参:seqstack *s,int i 函数作用:栈i退栈,并返回原栈顶元素 函数值:datatype data局部变量 datatype data 算法主要步骤: 判断是否为空栈: (a)若空,则输出“upflow error” if(s-top0top199) printf(upflow errorn); (b)若不为空,则退栈,取栈顶元素并栈顶标志移动 data=s-vs-top0;s-top0-; data=s-vs-top1;s-top1+; 3). 取栈i顶元素函数 函数首部:datatype top(seqstack *s,int i); 形参:seqstack *s,int i 函数作用:读取栈i的栈顶元素。 函数值:datatype data局部变量:datatype data data算法主要步骤:(a) 判断栈i是否为空;if(s-top0=i)if(s-top0vs-top0; (c) 将读取的元素返回;return (data); 四. 调试分析:1调试中出现的问题,解决的办法 1)Top0未定义,直接用s-top0,还减少变量。 2每个函数的时、空复杂性分析 1)void push(seqstack *s,int i,datatype x);x进入栈i;T(n)=O(1), S(n)=O(n); 2)datatype pop(seqstack *s,int i); 退栈i; T(n)=O(1), S(n)=O(n); 3). datatype top(seqstack *s,int i); 取栈i栈顶函数 T(n)=O(1) , S(n)=O(1); 4). void show(seqstack *s);显示共用栈内容 T(n)=O(1) , S(n)=O(1); 5). main() 主函数 T(n)=O(1) , S(n)=O(n).3改进设想,经验体会 多个栈共用一个数组,栈顶栈底位置都需要考虑。五. 使用说明:如何使用你编制的程序、操作步骤.编译程序成功后,按界面提示输入栈规模以及数据。六. 测试结果:输入输出数据内容:窗口显示如下:(下划线部分为输入部分,其余为输出部分)测试数据一:input the node n1:3input the data s1:15input the data s1:16input the data s1:17input the node n2:4input the data :21input the data :22input the data :23input the data :24pop s0 top:17pop s1 top:24top s0:16top s1:23no.0 node:15no.1node:16no.99 node:21no.98 node 22no.97 node:23测试数据二:input the node n1:1input the data s1:15input the node n2:4input the data :21input the data :22input the data :23input the data :24pop s0 top:15pop s1 top:24empty errortop s1:23no.99 node:21no.98 node 22no.97 node:23七源代码清单#include#include#define m 100typedef int datatype;typedef struct datatype vm;int top0,top1;seqstack;void main()void push(seqstack *s,int i,datatype x);datatype pop(seqstack *s,int i);datatype top(seqstack *s,int i);void show(seqstack *s);seqstack stack100;int j,n;datatype data;stack-top0=-1;stack-top1=100;printf(input the node n1:n);scanf(%d,&n);for(j=0;jtop0,data);printf(input the node n2:n);scanf(%d,&n);for(j=0;jtop1,data);data=pop(stack,stack-top0);printf(pop s0 top:%dn,data);data=pop(stack,stack-top1);printf(pop s1 top:%dn,data);data=top(stack,stack-top0); if(data0)printf(top s0 :%dn,data);data=top(stack,stack-top1);printf(top s1 :%dn,data);show(stack);void push(seqstack *s,int i,datatype x)if(s-top0top1)if(s-top0=i)s-top0+;s-vs-top0=x;elses-top1-;s-vs-top1=x;elseprintf(overflow errorn);datatype pop(seqstack *s,int i)datatype data;if(s-top0=i)if(s-top0vs-top0;s-top0-;elseif(s-top199)printf(upflow errorn);elsedata=s-vs-top1;s-top1+;return (data);datatype top(seqstack *s,int i)datatype data;if(s-top0=i)if(s-top0vs-top0;elseif(s-top199)printf(empty errorn);elsedata=s-vs-top1;return (d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学低年级语文识字与写作教学方案
- 机械通气护理的试题及答案
- 童年记忆主题五线谱音乐教学设计
- 大型仓库货物库存管理方案
- 新员工入职欢迎手册及常见问答
- 全过程施工项目管理制度标准
- 幼儿园科学活动课程设计方案
- 2025年8-氯腺苷项目提案报告
- 原木乐器定制与调音工作室创新创业项目商业计划书
- 农作物种植品牌国际化创新创业项目商业计划书
- 吉安市新庐陵投资发展有限公司及下属子公司2025年第二批面向社会公开招聘笔试备考题库及答案解析
- 2025至2030年中国生长激素行业市场深度研究及投资战略规划报告
- 大疆:2025大疆机场3操作指导书
- 2025年12345热线考试题库
- 2025年卫生健康行业经济管理领军人才试题
- 绿色矿山培训课件
- hiv职业暴露培训课件
- 2025年重庆市高考物理试卷(含答案解析)
- 小番茄栽培技术课件
- 女职工普法宣传教学课件
- (高清版)DB22∕T 5159-2024 预应力混凝土桩基础技术标准
评论
0/150
提交评论