资源描述:
《数据结构实验 栈和队列及其应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、本科实验报告专用纸课程名称数据结构成绩评定实验项目名称栈和队列及其应用指导教师一、实验目的和要求1.实验目的:熟练掌握栈及队列基本操作的实现;熟练栈和队列的结构特性,掌握在实际问题背景下的应用。2.实验要求:在上机前写出全部源程序完毕并调试完毕。二、实验原理和主要内容1.实验内容(1)建立栈并进行元素(8,9,5,4)入栈,实现链栈的建立及入栈的基本操作;实现元素(9,5)的出栈,实现链栈的出栈的操作;建立链队列,并实现元素(4,5,7,6,8)入队,实现链队列的建立和入队的基本操作;实现元素(4,5,7,6,8)出队,实现链队列的出队的基本操作。(2)问题描述:设停车场是一个可停
2、放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆达到时间的先后顺序,依次由北向南排列(大门在最南端,最先达到的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退车车场为它让路,待赶辆车开出大门外,其它车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短叫纳费用。试为停车场编制按上述要求进行管理的模拟程序。基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一
3、组输入数据包括三个数据项:汽车“达到”或“离去”信息、汽车牌照号码以及达到或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆达到、则输出汽车在停车场内或便道上停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。测试数据设n=2,输入数据为(“A”,1,5),(“A”,2,10),(“D”,1,15),(“A”,3,20),(“D”,2,35),(“E”,0,0),(“A”,1,5),其中:“A”表示达到(Arrival);“D”表示离去(Departure);“E”表示输入结束(End)
4、。2.实验原理(1)栈的修改时按照先进后出的原则进行的,试验中用到构造空栈,及入栈出栈操作。队列是一种先进先出的线性表,只允许在表的一端插入,而在另一端删除元素,试验中构造队并且入队出队。(2)三、主要仪器设备计算机,VC++高级程序语言四、调试分析试验中,有些小错误经常犯,比如符号,函数声明等。停车场试验栈与队列的扩展应用在做好实验栈队列的基础上熟练掌握栈和队列基本性质及基本操作显得很必要。实验中需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按达到或离去的时刻有序。栈中每个元素表示一辆汽车,包括两个数据项:汽车的牌照号码和进入停车
5、场的时刻。五、测试结果六、附录(源程序)1、#include#include#defineOK1#defineERROR0#defineOVERFLOW-2typedefintelemtype;typedefintstatus;typedefstructQNode{elemtypedata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;typedefstructlnode{elemtypedata;structlnode
6、*next;}stacknode,*linkstack;statusinitstack(linkstacktop){top->next=NULL;}statusisempty(linkstacktop){if(top->next==NULL)returnOK;returnERROR;}statuspush(linkstacktop,elemtypee){stacknode*p;p=(stacknode*)malloc(sizeof(stacknode));if(p==NULL)returnERROR;p->data=e;p->next=top->next;top->next=p;r
7、eturnOK;}statuspop(linkstacktop,elemtype*e){if(isempty(top))returnERROR;stacknode*p=top->next;*e=p->data;top->next=p->next;free(p);returnOK;}statusshstack(linkstacktop){stacknode*p;p=(stacknode*)malloc(sizeof(stacknode));p->next=top->ne