




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程实验报告专业年级2012级软件工程课程名称数据结构C语言描述指导教师申红婷学生姓名王晓霞学号实验日期实验地点A3笃行楼A栋306实验成绩教务处制2013年10月07日实验项目栈和队列实验名称目的:1.使学生对栈和队列的顺序存储结构和链式结构、基本操作和应用,能通过实验达到掌握和应用的目的。实验2.要求学生对栈和队列的顺序存储结构和链式结构的基本操作均作验证性实验,对栈和列的应用各作一个设计性实验,并写出实验报告。目的及要求二.要求:实验前认真预习实验内容,实验时自觉遵守课堂纪律,严格按操作规程操作,既要独立操作又要与其他同学配合,在实验过程中必须按照实验内容认真做完实验实验实验认真填写相关
2、实验报告。栈和队列的顺序存储结构和链式结构、基本操作和应用。内容1、阅读下面程序,将函数Push和函数Pop补充完整。要求输入元素序列12345e,运行结果如下所示。#include实验步骤实验步骤#include#defineERROR0#defineOK1#defineSTACK_INT_SIZE10/*存储空间初始分配量*/#defineSTACKINCREMENT5/*存储空间分配增量*/typedefintElemType;/*疋义兀素的类型*/typedefstructElemType*base;ElemType*top;intstacksize;/*当前已分配的存储空间*/SqS
3、tack;intInitStack(SqStack*S);/*构造空栈*/intpush(SqStack*S,ElemTypee);/*入栈*/intPop(SqStack*S,ElemType*e);/*出栈*/intCreateStack(SqStack*S);/*创建栈*/voidPrintStack(SqStack*S);/*出栈并输出栈中元素*/intInitStack(SqStack*S)S-base=(ElemType*)malloc(STACK_INT_SIZE*sizeof(ElemType);if(!S-base)returnERROR;S_top=S_base;S-sta
4、cksize=STACK_INT_SIZE;returnOK;/*lnitStack*/intPush(SqStack*S,ElemTypee)if(S-top-S-base=S-stacksize)S-base=(ElemType*)realloc(S-base,(S-stacksize+STACKINCREMENT)*sizeof(ElemType);S-top=S-base+S-stacksize;S-stacksize+=STACKINCREMENT;*S-top+=e;return1;/*Push*/intPop(SqStack*S,ElemType*e)if(S-top!=S-ba
5、se)*e=*-S-top;return1;elsereturn0;/*Pop*/intCreateStack(SqStack*S)inte;if(lnitStack(S)printf(InitSuccess!n);elseprintf(InitFail!n);returnERROR;printf(inputdata:(Terminatedbyinputingacharacter)n);while(scanf(%d,&e)Push(S,e);returnOK;/*CreateStack*/voidPrintStack(SqStack*S)ElemTypee;while(Pop(S,&e)pri
6、ntf(%3d,e);/*Pop_and_Print*/intmain()SqStackss;printf(n1-createStackn);CreateStack(&ss);printf(n2-Pop&Printn);PrintStack(&ss);printf(n);return0;算法分析:输入元素序列12345,为什么输出序列为54321?体现了栈的什么特性?程序运行结果如下图所示:r*C:Windowssystem32Debugfgf.?Kelcrea七InitSuccess*Inputdata:2-Pop&Print74S985Presskeytocontinuea因为当main函
7、数调用PrintStack(&ss)时,程序转到函数体中,而在该函数体内,又调用了intPop(SqStack*S,ElemType*e),此函数的功能是栈S的栈顶元素退栈并返回其值。所以输入元素序列12345,输出序列为54321。而这则体现了栈是只允许在表的一端进行操作的线性表并且具有先进后出的特性。2、在第1题的程序中,编写一个十进制转换为二进制的数制转换算法函数(要求利用栈来实现),并验证其正确性。实现代码voidconveshen(SqStack*S)ElemTypen,h;intm=0,k=0;InitStack(S);printf(lnputelementn);scanf(%d,
8、&n);while(n)m+;Push(S,n%2);n=n/2;while(km)k+;Pop(S,&h);printf(%d,h);intmain()SqStackS;conveshen(&S);printf(n);return0;验证C:V7indowssystem32Debugfgd,exeF,Inputelement2511001Pressanykeytocontinue3、阅读并运行程序,并分析程序功能#include#include#include#defineM20#defineelemtypechartypedefstructelemtypestackM;inttop;sta
9、cknode;voidinit(stacknode*st);voidpush(stacknode*st,elemtypex);voidpop(stacknode*st);voidinit(stacknode*st)st-top=0;voidpush(stacknode*st,elemtypex)if(st-top=M)printf(thestackisoverflow!n);elsest_top=st_top+1;st-stackst-top=x;voidpop(stacknode*st)if(st-top0)st-top-;elseprintf(StackisEmpty!n);intmain
10、()charsM;inti;stacknode*sp;printf(createaemptystack!n);sp=malloc(sizeof(stacknode);init(sp);printf(inputaexpression:n);gets(s);for(i=0;itop=O)printf(match)!n”);elseprintf(notmatch)!n”);return0;输入:2+(c-d)*6-(f-7)*a)/6运行结果:f9、Windowssystem32Debugfgd.exehpeteaEmptystack!inputaexpression:2+*6-C-75Ma/6CJ
11、match*J*Pi*es:Snykeytocorktxnue输入:a-(c-d)*6-(s/3-x)/2运行结果:-C:Windov;ssystem32Debugfgd.execreateaemptystack*i.nputaexpression:a-Ccd?*6s/3xJ/21J*Pressan9kevtocontinue程序的基本功能判断所输入多项式的左右括号是否配对运行环境说明实验环境PC计算机,Windows2000(或WindowsXP)及以上版本,C基础数据设置及说明计算机,Windows2000(或WindowsXP)及以上版本,C均能正常运行TOCo1-5hz通过这次实验,我已经基本掌握了本章的学习要点和实验的基本要求以及目的。第一个程序填空题使我学会了栈和队列的结构定义,逻辑特性及其基本操作的使用。而第二个程序分析则使我明白了栈和队列的顺序存储表示和链式存储表示,这使得我懂得了该在什么情况下分别实用两种存储表示并用程序代码实现它们相应的操作。虽然我最终顺利完成了实验,但是在实验过程中我也遇到了许多问题,比如说,不清楚实验结果与分析实验结果与分析栈和队列的结构定义以至于在后续过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 和舍友合租合同协议
- 快递箱子采购合同协议
- 民宿买卖地皮合同协议
- 二零二五二手房定金合同书参考模板
- 兼职业务员合同书
- 公司尽职调查法律服务委托合同书二零二五年
- 二零二五版公司股权质押担保协议书范文
- 2025至2030全球动力锂电池行业需求量分析与发展行情监测报告
- 物业租赁收费协议书范例二零二五年
- 2025年高考政治:《经济生活》答题方法+高考精题
- 如何防范勒索软件和网络勒索攻击
- 重点监管的危险化学品名录完整版及相关解读
- 2024年福建国有企业海峡人力南平分公司招聘笔试参考题库含答案解析
- 七年级下册英语单词默写表直接打印
- 菜品退单原因分析报告
- 新能源电动汽车技术简介
- 天融信运维安全审计系统V3
- 2024年初级社会工作者《社会工作实务(初级)》考试练习题(含答案)
- 教学勇气:漫步教师心灵
- 卷料加工中的跑偏与纠偏控制
- 波纹钢装配式检查井通用技术规范
评论
0/150
提交评论