课程实验报告+2_第1页
课程实验报告+2_第2页
课程实验报告+2_第3页
课程实验报告+2_第4页
课程实验报告+2_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论