顺序栈实验报告

顺序栈实验报告

ID:35505697

大小:58.54 KB

页数:15页

时间:2019-03-25

顺序栈实验报告_第1页
顺序栈实验报告_第2页
顺序栈实验报告_第3页
顺序栈实验报告_第4页
顺序栈实验报告_第5页
资源描述:

《顺序栈实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、顺序栈实验报告一、设计人员相关信息1•设计者姓名、学号和班号:12地信李晓女青1XX2429832.设计日期:XX.3.上机环境:VC++二、程序设计相关信息1•实验题目:编写一个程序,实现顺序栈的各种基本运算,并在此基础上设计一个程序,完成如下功能:初始化栈判断栈是否为空依次进栈元素a,b,c,d,e判断栈是否为空输出栈长度输出从栈顶到栈底元素输出出栈序列判断栈是否为空释放栈2.实验项目组成:栈的初始化、销毁、判断是否为空、进栈、出栈、取栈顶元素。3.实验项目的程序结构:4.实验项目包含的各个文件中的函数的功能描述:初始化栈InitStack:建立一个新的

2、空栈,实际上将栈顶指针指向T即可。销毁栈DestroyStack:释放栈占用的存储空间判断栈是否为空StackEmpty:栈为空的条件是s-〉op=_]。进栈Push:在栈不满的条件下,先将栈顶指针增1,然后在栈顶指针指向位置插入元素eo出栈Pop:在栈不为空的条件下,先将栈顶元素赋给e,然后将栈顶指针减1.取栈顶元素GetTop:在栈不为空的条件下,将栈顶元素赋给e。2.算法描述或流程图:#include"Windude""#include#defineMaxSize50typedefcharElemType;typedefstruct{ElemTyped

3、ata[MaxSize];inttop;/*栈顶指针*/}SqStack;//定义顺序栈类型voidlnitStack/*初始化*/s=malloc);s->top=-l;//栈顶指针置为-1}voidDestroyStack/*销毁*/{free;}intStackEmpty/*判断是否为空*/{return;}intpush{inti;if//栈满的情况,即栈上溢出returnOjfor{s->top++;//栈顶指针增1s->data[s->top]=a[i];//元素e放在栈顶指针处}intPopA出栈一个元素*/{if//栈为空的情况,即栈下溢出r

4、eturnO;e=s->data[s->top];//取栈顶元素s->top—;//栈顶指针减1returnl;}returnl;intGetTop/*取栈顶元素*/{if//栈为空的情况,即栈下溢出return0;e=s->data[s->top];//取栈顶元素returnl;}intStackLength/*求栈长度*/{return;}voidDispStack{}voidmain{inti,j;ElemTypestr=a",'b#39'c','d','e'};//定义字符数组SqStack*st;//定义栈InitStack;/*初始化*/i=St

5、ackEmpty;//判断栈是否为空ifinti;forprintfjprintf;printf;elseprintf;push;//进栈j二StackEmpty;ifprintf;elseprintf;printf);//输出栈长度printf;DispStack;//输出栈StackEmpty;DestroyStack;}2.实验数据和实验结果:数据结构实验三课程数据结构实验名称顺序栈基本操作第页专业班级学号姓名实验日期:年月日评分一、实验目的1.熟悉并能实现栈的定义和基本操作。2.了解和掌握栈的应用。、实验要求1.进行栈的基本操作时要注意栈〃后进先出〃

6、的特性。2.编写完整程序完成下面的实验内容并上机运行。1.整理并上交实验报告。三、实验内容1.编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行清空、销毁、入栈、出栈以及取栈顶元素操作。2.编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。主要功能描述如下:从键盘上输入表达式。分析该表达式是否合法:99■?a)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。b)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。c)若是其它字符,则返回错误信息。若上述处理过程中没有发现错误,则认为该表

7、达式合法,并打印处理结果。程序中应主要包含下面几个功能函数:?lvoidinitstack:初始化堆栈lintMakestr:语法检查并计算99■9■9■99■9■?lintpushoperate:将操作码压入堆栈lintpush_num:将操作数压入堆栈lintprocede:处理操作码lintchange_opnd:将字符型操作码转换成优先级1intpush_opnd:将操作码压入堆栈lintpop_opnd:将操作码弹出堆栈lintcaculate:简单计算+,-,*,/ldoublepopnum:弹出操作数四、实验步骤第一题:#includeusin

8、gnamespacestd;ttdefineSTAC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。