资源描述:
《数据结构--顺序栈的基本运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数据结构》上机报告_______年____月____日姓名__________学号___________同组成员___________1.实验题目及要求实验一:顺序栈的各种基本运算编写一个程序,实现顺序栈的各种基本运算,并在基础上完成以下功能:1)初始化顺序栈;2)判断顺序栈是否为空;3)依次进栈元素a,b,c,d,e;4)判断顺序栈是否为空;5)输出栈长度;6)输出从栈顶到栈底的元素;7)读出栈顶元素;8)删除栈顶元素;9)输出从栈顶到栈底的元素;10)判断顺序栈是否为空;11)释放栈。2.需求分析首先初始化顺序栈(1)判断顺序队列
2、S是否为空输入参数的格式和合法取值范围:若顺序栈内无元素则输出顺序栈为空,反之输出顺序栈为非空。输出格式:判断顺序栈是否为空:测试数据:初始化顺序表后,显示顺序栈为空。(2)依次进栈元素a,b,c,d,e输入参数的格式和合法取值范围:依次进栈元素a,b,c,d,e并用逗号分隔。输出格式:依次进栈元素a,b,c,d,e。测试数据:依次进队列元素a,b,c,d,e后,顺序栈中包含a,b,c,d,e五个元素。(3)输出栈的长度输入参数的格式和合法取值范围:此时顺序栈中包含a,b,c,d,e五个元素,故长度为5。输出格式:输出栈长度:5。测试数
3、据:此时顺序栈中的元素为a,b,c,d,e。所以屏幕显示输出栈长度:5。(4)输出从栈顶到栈底的元素输入参数的格式和合法取值范围:进栈顺序依次为a,b,c,d,e,故栈底为a,栈顶为e,则栈顶到栈底元素依次为e,d,c,b,a。输出格式:输出从栈顶到栈底的元素:edcba测试数据:进栈顺序依次为a,b,c,d,e,故栈底为a,栈顶为e,则栈顶到栈底元素依次为e,d,c,b,a。(1)读出栈顶元素输入参数的格式和合法取值范围:顺序栈中元素从栈顶到栈底依次为e,d,c,b,a。故栈顶为e。输出格式:读出栈顶元素:e。测试数据:顺序栈中元素从
4、栈顶到栈底依次为e,d,c,b,a。故屏幕显示读出栈顶元素为e。(2)删除栈顶元素输入参数的格式和合法取值范围:顺序栈中元素从栈顶到栈底依次为e,d,c,b,a。故栈顶为e,删除e。输出格式:删除栈顶元素e。测试数据:顺序栈中元素从栈顶到栈底依次为e,d,c,b,a。进行删除栈顶元素操作,即删除元素e。(3)输出从栈顶到栈底的元素输入参数的格式和合法取值范围:此时删除了栈顶元素e,栈顶元素变为d,故顺序栈中元素从栈顶到栈底依次为d,c,b,a,输出格式:输出从栈顶到栈底的元素:dcba测试数据:此时栈顶到栈底元素依次为d,c,b,a,故
5、屏幕显示输出从栈顶到栈底的元素:dcba。2.概要设计(1)给出所用抽象数据类型的逻辑定义。ADTStack{数据对象:D={ai
6、ai∈ElemSet,i=1,2,…,n,n≥0}结构关系:R={
7、ai-1,ai∈D,i=2,…,n}基本操作:InitStack(&S)操作前提:S是一个未初始化的空栈。操作结果:构造一个空栈S。DestroyStack(&S)操作前提:栈S已存在。操作结果:栈S清被摧毁。StackEmpty(S)操作前提:栈S已存在。操作结果:若栈S为空栈,则返回TURE,否则返回FALSE。Sta
8、ckJudgement操作前提:栈S已存在。操作结果:若栈S为空栈,则输出是,没否则输出否。StackLength(S)操作前提:栈S已存在。操作结果:返回S的元素个数。Push(&S,e)操作前提:栈S已存在。操作结果:插入元素e为新的栈顶元素。GetTop(S,&e)操作前提:栈S已存在且非空。操作结果:用e返回S的栈顶元素。Pop(&S,&e)操作前提:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。StackTraverse(S,visit())操作前提:栈S已存在且非空。操作前提:从栈底到栈顶依次对S的每个数据元
9、素调用函数visit()。一旦visit()失败,则操作失败。(1)画出各模块之间的调用关系图。mainDestroyStackInitStackStackEmptyStackJudgementStackLengthPushGetTopPopStackTraverse(2)用伪码给出主程序的主要处理过程。#include#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineNULL0#defi
10、neOVERFLOW-2typedefintStatus;typedefcharSElemType;Statusvisit(SElemTypee);#defineSTACK_INIT_SIZE100#def