08级实验3-05.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告一、实验目的1、掌握栈的数据类型描述及栈的特点;2、掌握栈的顺序和链式两种存储结构的特点及算法描述;3、掌握栈的5种基本运算及算法在两种不同存储结构上的实现;4、掌握队列的数据类型描述及链式存储结构的特点和算法描述;5、掌队列的5种基本运算及在链式存储结构上的实现。二、实验内容停车场管理。设有一个可以停放n辆汽车的狭长停车场(先进后出),它只有一个大门可以提供车辆进出。车辆按到达停车场时间先后依次从停车场最里面向大门口处停放(最先到达的第一辆车停放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场能有车离开,则排在便道上的第一辆车就可以进入停车场。停车场内如有某车辆要离开,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车按原来的次序进停车场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车没进停车场就要离开,允许其离开,不受停车费,并且仍然保持在便道上的车辆次序。是编程模拟停车场管理三、实验算法与分析可以将停车场定义成一个顺序栈s1,便道定义为一个链队列q,而停车场中的某辆车要离开,则在它后面进停车场的车必须让道,让其离开,故还必须有一个临时的顺序栈s2,存放让道的车辆。当有车辆进停车场时,直接进入s1栈,若s1栈满,怎进入便道(链队列q)。若有s1中车辆x离开时,先让在x后面进栈的车队从s1退栈并进栈到s2中,让x离开并收取停车费,然后,再把s2中的所有元素退栈并重新进入s1栈,最后,将链队q的队头元素进栈s1中并删除队头元素。若链队q(便道)中的元素y离开时,从链队中删除该元素即可,不收停车费。车辆的数据可以表示为(车辆编号,到达/离开时间)。(1)输入车辆编号,时间及动作(进入或者离开或者结束),若进入,转(2),若离开,转(3),若结束,则终止程序;(2)判断s1是否满栈,若满栈,则进入队列q中,否则进栈;(3)将车辆a之后的元素进入栈s2 中,a退栈并根据时间计费。将s2中的元素依次入栈s1,将对头元素进入栈中。四、可执行程序及注释//算法实现#include iostream.hconst int N=5; //停车场栈的长度const int M=6; //单位时间内停车场收费值typedef struct{int num; //车辆编号int arrtime; //到达或离开时间}elemtype;struct seqstack{elemtype stack[N+1];int top;}s1,s2;struct link{elemtype data;link *next;};struct linkqueue{link *front,*rear;}q;seqstack inistack(seqstack s) //栈的初始化{s.top=0;return s;}seqstack push(seqstack s,elemtype x) //进栈{s.top++;s.stack[s.top]=x;return s;}seqstack pop(seqstack s) //退栈{s.top--;return s;}elemtype gettop(seqstack s) //取栈顶元素{return s.stack[s.top];}int empty(seqstack s) //判断栈空{if(s.top==0)return 1;elsereturn 0;}linkqueue iniqueue(linkqueue s) //链队列初始化{link *p;p=new link;p-next=NULL;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(linkqueue s){if(s.front==s.rear) return 1;elsereturn 0;}//

文档评论(0)

xvli2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档