- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中法计122班--实验二
数据结构实验二
停车场管理
【实验内容】
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现。队列以链表结构实现。
【实验目的】
深入了解栈和队列的特性,掌握栈和队列的存储方法。
掌握栈和队列的基本操作,如初始化、入栈(队列)、出栈(队列)等,并能在实际问题背景下灵活运用。
【程序清单】
#includestdio.h
#includestdlib.h
#includemalloc.h
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
typedef int Status;
int si;
//栈,模拟停车场
typedef struct Car1{//车
int number;//汽车车号
int ar_time;//汽车到达时间
}CarNode;
typedef struct{//停车场
CarNode *base;//停车场的堆栈底
CarNode *top;//停车场的堆栈顶
int stacksize;
}Park;
//队列,模拟便道
typedef struct Car2{//车
int number;//汽车车号
int ar_time;//汽车到达时间
struct Car2 *next;
}*CarPtr;
typedef struct{//便道
CarPtr front;//便道的队列的对头
CarPtr rear;//便道的队列的队尾
int length;
}Shortcut;
Status InitStack(Park P){//初始化停车场
P.base=(CarNode*)malloc(si*sizeof(Car1));
if(!P.base) exit(OVERFLOW);
P.top=P.base;
P.stacksize=0;
return OK;
}
Status Push(Park P,CarNode e){//车进入停车场
*P.top++=e;
++P.stacksize;
return OK;
}
Status Pop(Park P,CarNode e){//车离开停车场
if(P.top==P.base)
printf(停车场为空。);
else
{
e=*--P.top;
--P.stacksize;
}
return OK;
}
Status InitQueue(Shortcut S){//初始化便道
S.front=S.rear=(CarPtr)malloc(sizeof(Car2));
if(!S.front||!S.rear) exit(OVERFLOW);
S.front-next=NULL;
S.length=0;
return OK;
}
Status EnQueue(Shortcut S,int number,int ar_time){//车进入便道
CarPtr p;
p=(CarPtr)malloc(sizeof(Car2));
if(!p) exit(OVERFLOW);
p-number=number;
p-ar_time=ar_time;
p-next=NULL;
S.rear-next=p;
S.rear=p;
++S.length;
return OK;
}
Status DeQueue(Shortcut S,CarPtr w){ //车离开便道
if(S.length == 0)
printf(通道为空。);
文档评论(0)