版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实训题三 栈和队列的运用一、实训目的1.掌握栈的数据类型描述及栈的特点。2.掌握栈的顺序和链式两种存储结构的特点及算法描述。3.掌握栈的5种基本运算及算法在不同存储结构上的实现。4.掌握队列的数据类型描述及链式存储结构的特点和算法描述。5.掌握队列的5种基本运算及在链式存储结构上的实现。二、实训内容1. 设车辆厂生产了硬座车厢和软座车厢共n节(混合在一起),要求用顺序栈的5种运算使所有的硬座车厢排列到所有软座车厢的前面。2. 利用栈将中缀表达式转换成等价的后缀表达式。3. 将一个正整数n转换成十六进制,要求用链栈的5种运算来实现。4. 停车场管理。设有一个可以停放n辆汽车的狭长停车场(先进后出
2、),它只有一个大门可以供车辆进出。车辆按达到停车场时间的先后依次从停车场最里面向大门口停放(最先到达的第一辆车停放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车离开,则排在便道上的第一辆车就可以进入停车场。停车场内如有有某辆车要离开,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车再按原来的次序进停车场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车没进停车场就要离开,允许其离开,不受停车费,并且仍然保持在便道上的车辆次序。是编程模拟停车场管理。三、算法描述1.第1题的算法实
3、现#include#define elemtype charconst maxsize=1000;class seqstackpublic:elemtype stackmaxsize;int top;void inistack()top=0;void push(elemtype x)if(top=maxsize-1)coutoverflow;elsetop+;stacktop=x;void pop()if(top=0)coutunderflow;else top-;elemtype gettop()if(top=0)coutunderflow;return 0;else return stac
4、ktop;bool empty()if(top=0)return true;else return false;void main()int n,i;elemtype x;seqstack S;S.inistack();coutn;cout请输入n节车厢代号(H代表硬座车厢,S代表软座车厢);for(i=1;ix;if(x=H)coutx;else S.push(x);while(!S.empty()x=S.gettop();coutx;S.pop();coutendl;程序的结果:2第2题的算法实现#include#defineelemtypecharconstmaxsize=1000;el
5、emtypes1maxsize,s2maxsize;classseqstackpublic:elemtypestackmaxsize;inttop;voidinistack()top=0;voidpush(elemtypex)top+;stacktop=x;voidpop()top-;elemtypegettop()returnstacktop;boolempty()if(top=0)returntrue;elsereturnfalse;intoper(elemtypeop)switch(op)case+:case-:return1;case*:case/:return2;case(:retu
6、rn0;default:return0;voidchange()elemtypey,ch;top=0;inistack();push();inti=0,j=0;ch=s1i;while(ch!=)if(ch=)ch=s1+i;elseif(ch=()push(ch);ch=s1+i;elseif(ch=)y=gettop();while(y!=()s2j+=y;s2j+=;pop();y=gettop();pop();ch=s1+i;elseif(ch=+)|(ch=-)|(ch=*)|(ch=/)y=gettop();if(oper(ch)oper(y)push(ch);ch=s1+i;el
7、sey=gettop();s2j+=y;s2j+=;pop();elsewhile(ch=0)&(ch=9)|(ch=.)s2j+=ch;ch=s1+i;s2j+=;y=gettop();while(y!=)s2j+=y;s2j+=;pop();y=gettop();s2j=;voidmain()seqstacks;elemtypech;inti=0;coutch;while(ch!=)s1i+=ch;cinch;s1i=;cout中缀表达式为:endl;for(intj=0;ji;j+)couts1j;coutendl;s.change();cout后缀表达式为:endl;j=0;while
8、(s2j!=)couts2j;j+;coutendl;程序的结果3第3题的算法运算#include#define elemtype charclass linkpublic:elemtype data;link *next;class linkstackpublic:link *top;void inistack()top=new link;top-next=NULL;void push(elemtype x)link *s=new link;s-data=x;s-next=top-next;top-next=s;void pop()link *s=top-next;if(s!=NULL)to
9、p-next=s-next;delete s;elemtype gettop()if(top-next!=NULL)return(top-next-data);else return NULL;bool empty ()if(top-next=NULL) return true;else return false;void decTOhex(int n)elemtype x;inistack();while(n);int j=n%16;if(j10) x=j+48;else x=j+55;push(x);n=n/16;while(!empty()x=gettop();coutx;pop();c
10、outendl;void main()int n;linkstack s;coutn;cout十进制数n的十六进制为;s.decTOhex(n);程序的结果:4第4题的算法实现#includeconst int N=5;const int M=6;typedef structint num;int arrtime; elemtype;struct seqstackelemtype stackN+1;int top;s1,s2;struct linkelemtype data;link *next;struct linkqueuelink *front,*rear;q;seqstack inis
11、tack(seqstack S)S.top=0;return S;seqstack push(seqstack S,elemtype x)S.top+;S.stackS.top=x;return S;seqstack pop(seqstack S)S.top-;return S;elemtype gettop(seqstack S)return S.stackS.top;int empty(seqstack S)if(S.top=0)return 1;else return 0;linkqueue iniqueue(linkqueue s)link *p;p=new link;p-next=N
12、ULL;s.front=s.rear=p;return s;linkqueue enqueue(linkqueue s,elemtype x)link *p;p=new link;p-data=x;p-next=s.rear-next;s.rear-next=p;s.rear=p;return s;linkqueue dlqueue(linkqueue s)link *p=s.front;s.front=p-next;delete p;return s;elemtype gethead(linkqueue s)return s.front-next-data;int emptyqueue(li
13、nkqueue s)if(s.front=s.rear)return 1;else return 0;void arrive(elemtype x)if(s1.top=N)q=enqueue(q,x);else s1=push(s1,x);void delive(elemtype x)int f=1;elemtype y;link *r;while(!empty(s1)&(f=1)if(s1.stacks1.top.num!=x.num)y=gettop(s1);s1=pop(s1);s2=push(s2,y);elsef=0;y=gettop(s1);s1=pop(s1);cout停车场中有
14、编号为x.num的车endl;cout该车将离开,应收停车费:(x.arrtime-y.arrtime)*M元data.num!=x.num)r=p;p=p-next;if(p!=NULL)cout便道上有编号为x.num的车辆endl;cout该车将离开,应收停车费0.00元:next=p-next;delete p;elsecout便道上没有编号为x.num的车辆,输入的车辆不存在!endl;void pr1()int t=s1.top;cout停车场中的车辆编号和到达时间endl;while(t!=0)couts1.stackt.num s1.stackt.arrtimeendl;t-;coutnext;cout便道中的车辆编号和到达时间endl;while(p!=NULL)coutdata.num data.arrtimenext;coutendl;void main()int n;elemtype x;s1=inistack(s1);s2=inistack(s2);q=iniqueue(q);while(1)coutendl;cout请输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东济南商河县事业单位招聘107人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东沂水经济开发区管理委员急需紧缺人才引进8人管理单位笔试遴选500模拟题附带答案详解
- 2025年山东德州齐河县事业单位公开招聘工作人员206人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东德州事业单位历年管理单位笔试遴选500模拟题附带答案详解
- 2024年山地景观挡土墙劳务分包工程协议书2篇
- 柳林闸课程设计
- 江苏语音教室课程设计
- 市场方案模板五篇
- 2025年山东南郊集团限公司社会招聘(22人)管理单位笔试遴选500模拟题附带答案详解
- 家庭生活困难申请书
- 美食文创计划书
- 江西省赣州市赣县区2022-2023学年四年级上学期期末检测英语试卷
- GB/T 43439-2023信息技术服务数字化转型成熟度模型与评估
- 废水处理系统点检表
- 干湿球温度湿度换算表
- 儿童英文自我介绍演讲PPT模板(完整版)
- 请款单(可直接打印-标准模板)
- 最专业的无人机中文英语对应词汇
- 高中学生学籍表模板(范本)
- 消防验收常见问题汇总
- 1027试验设计课件
评论
0/150
提交评论