欢迎来到天天文库
浏览记录
ID:14687047
大小:4.48 MB
页数:31页
时间:2018-07-30
《数据结构实验报告 代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《数据结构》实验报告实验序号:5 实验项目名称:链式栈学 号1207082131姓 名罗维卿专业、班12物联网实验地点指导教师实验时间一、实验目的及要求1.掌握栈的存储结构的表示和实现方法。二、实验设备(环境)及要求微型计算机;windows操作系统;MicrosoftVisualStudio6.0集成开发环境。三、实验内容与步骤(1)根据输入的栈中元素个数和各元素值建立一个链栈,并输出链栈中各元素值,观察输入的内容与输出的内容是否一致,特别注意栈顶元素的位置。(2)将数据元素x入栈,并输出入栈后的链栈中各元素值。(3)将链栈中的栈顶元素出栈,
2、并输入出栈元素的值和出栈后链栈中各元素值。四、实验结果与数据处理五、分析与讨论对上机实践结果进行分析,上机的心得体会。六、教师评语签名:日期:成绩附源程序清单:http://wenku.baidu.com/link?url=G15bQUbjDe_Kx-bejATfZkUM_pkAPWkfLo2EnxBAF1_JkQ2w7BGlIgDUSr2mwxNssTelZ5prE5lUSaSvDuE3V3hgOrpTCkWodEdQTyACQWi1.实验要求编程实现如下功能:(1)根据输入的栈中元素个数n和各元素值建立一个顺序栈,并输出栈中各元素值。(2)将数据元素e入栈,并输
3、出入栈后的顺序栈中各元素值。(3)将顺序栈中的栈顶元素出栈,并输出出栈元素的值和出栈后顺序栈中各元素值。2.实验相关原理:栈是一种插入和删除操作都限制在表的一端进行的特殊线性表,它的操作具有“先进后出”的特性。采用顺序存储结构的栈称为顺序栈。栈的存储结构描述如下:#defineMAXSIZE100;/*顺序栈的最大长度*/typedefstruct{Selemtypebase[MAXSIZE];/*存储栈中数据元素的数组*/inttop;/*top为栈顶指针,它指示栈顶元素的存储空间的下一个存储单元*/}Sqstack;【核心算法提示】1.顺序栈入栈操作的基本步骤:
4、首先判断顺序栈是否为满,如果满,则函数返回ERROR,否则将待入栈的数据元素存放在top所指示的存储单元中,再使top后移一个存储单元位置,即将top值加1,最后函数返回OK。2.顺序栈出栈操作的基本步骤:首先判断顺序栈是否为空,如果空,则函数返回ERROR,否则将栈顶指针前移一个存储单元位置,即将top值减1,再将top所指示的栈顶元素用e返回其值,并使函数返回OK。【核心算法描述】statusPush(Sqstack&S,Selemtypee)/*将数据元素e压入到顺序栈S中,使其成为新的栈项元素*/{if(S.top>=MAXSIZE)/*如果栈满,则函数返回
5、ERROR*/returnERROR;S.base[S.top++]=e;/*将新元素e存放在top所指示的存储单元中,并使top值加1*/returnOK;}statusPop(Sqstack&S,Selemtype&e)/*将顺序栈S中的栈顶元素从栈中删除,并用e返回其值*/{if(S.top==0)/*如果栈空,则函数返回ERROR*/ReturnERROR;e=S.base[--S.top];/*将top值减1,并用e保存top所指示的栈顶元素值*/returnOK;}3.源程序代码参考#defineMAXSIZE100typedefstruct{intba
6、se[MAXSIZE];inttop;/*top指示存储栈顶元素的下一存储单元*/}Sqstack;/*顺序栈的类型定义*/SqstackPush(SqstackS,inte)/*顺序栈的入栈操作函数*/{if(S.top>=MAXSIZE)printf("StackisOverflow");elseS.base[S.top++]=e;returnS;}SqstackPop(SqstackS,int*e)/*顺序栈的出栈操作函数*/{if(S.top==0)printf("StackisEmpty");else*e=S.base[--S.top];retur
7、nS;}voidStack_display(SqstackS)/*顺序栈的输出函数*/{inti;for(i=0;i
此文档下载收益归作者所有