停车场管理系统实验报告讲解Word文档下载推荐.docx
《停车场管理系统实验报告讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《停车场管理系统实验报告讲解Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。
输入数据按到达或离去的时刻有序。
栈中每个元素表示一辆汽车,包含两个数据项:
汽车的牌照号码和进入停车场的时刻。
设n=2,输入数据为:
(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。
汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,‘A’表示到达;
‘D’表示离去,‘E’表示输入结束。
三、实验要求:
1.C/C++完成算法设计和程序设计并上机调试通过。
2.撰写实验报告,提供实验结果和数据。
3.写出算法设计小结和心得。
四、程序源代码:
1.#include<
iostream.h>
#include<
stdlib.h>
typedefstructstnode
{
intdata;
stnode*next;
}LinkStack;
//创建一个栈头结点,无头结
voidInitStack(LinkStack*&
ls)
ls=NULL;
}
//进栈,相当于头插法
voidPush(LinkStack*&
ls,intx)
LinkStack*p;
p=(LinkStack*)malloc(sizeof(LinkStack));
p->
data=x;
next=NULL;
next=ls;
ls=p;
//出栈
voidPop(LinkStack*&
if(ls==NULL)
return;
intx;
p=ls;
while(p)
{
x=p->
data;
ls=p->
next;
cout<
<
x<
"
"
;
free(p);
p=ls;
}
cout<
出栈成功!
!
endl;
//创建栈
voidCreatStack(LinkStack*&
InitStack(ls);
inti=1,num;
以000表示输入结束!
while
(1)
请输入第"
i<
个元素:
cin>
>
num;
if(num==000)
break;
Push(ls,num);
i++;
进栈成功!
!
voidmain()
LinkStack*ls,*p;
CreatStack(ls);
Pop(ls);
2.#include<
#defineQueueSize100
typedefstructsqqueue
intdata[QueueSize];
intfront,rear;
}SqQueue;
//初始化队列
voidInitQueue(SqQueue&
qu)
qu.rear=qu.front=0;
//进队
intEnQueue(SqQueue&
sq,intx)
if((sq.rear+1)%QueueSize==sq.front)
return0;
sq.rear=(sq.rear+1)%QueueSize;
sq.data[sq.rear]=x;
return1;
//出队
voidDeQueue(SqQueue&
sq)
if(sq.front==sq.rear)
while(sq.front!
=sq.rear)
sq.front=(sq.front+1)%QueueSize;
x=sq.data[sq.front];
出队成功!
//创建队
voidCreatQueue(SqQueue&
InitQueue(sq);
intnum,i=1;
以000表示输入结束!
EnQueue(sq,num);
进队成功!
SqQueuesq;
CreatQueue(sq);
DeQueue(sq);
3.#include<
stdio.h>
#defineMAX2
#defineprice0.05
typedefstructnode
inthour;
intmin;
}Time;
//时间结点
typedefstructNode
charnum[10];
//车牌号
Timereach;
//时间
Timeleave;
}CarNode;
//车辆信息结点
typedefstructNODE
CarNode*stack[MAX];
inttop;
}CarStack;
//顺序栈模拟车站
typedefstructQNode//队列
CarNode*data;
QNode*next;
}QueueNode;
//链队结点类型
typedefstructpqrt
QueueNode*front,*rear;
//设置头指针尾指针
}LinkQueueCar;
//模拟通道
//初始化栈
voidInitStack(CarStack*cs);
//初始化队列(便道)
intInitQueue(LinkQueueCar*qc);
//车辆到达
intArrival(CarStack*Enter,LinkQueueCar*qc);
//车辆离开
voidLeave(CarStack*Enter,CarStack*Temp,LinkQueueCar*qc);
//显示车库信息
voidList(CarStacks,LinkQueueCarw);
CarStackEnter,Temp;
LinkQueueCarWait;
intch;
InitStack(&
Enter);
Temp);
InitQueue(&
Wait);
欢迎光临"
-----------------------"
1.车辆到达"
2.车辆离开"
3.车场显示"
4.退出程序"
请选择所需的服务!
while
(1)
{
cin>
ch;
if(ch>
=1&
&
ch<
=4)
break;
}
switch(ch)
case1:
Arrival(&
Enter,&
case2:
Leave(&
Temp,&
case3:
List(Enter,Wait);
case4:
exit(0);
default:
break;
voidInitStack(CarStack*cs)
cs->
top=-1;
for(inti=0;
MAX;
i++)
cs->
stack[cs->
top]=NULL;
intInitQueue(LinkQueueCar*qc)//初始化队列
//qc=(LinkQueueCar*)malloc(sizeof(LinkQueueCar));
这句话不能要?
?
qc->
front=(QueueNode*)malloc(sizeof(QueueNode));
if(qc->
front!
=NULL)
qc->
front->
//带头结点的
rear=qc->
front;
//一定要注意赋值顺序不能反了!
return1;
else
return-1;
//打印车站车离开的信息
voidPrint(CarNode*p,introom)
intA1,A2,B1,B2;
//车辆收费
请输入离开时间:
/**:
**/"
请输入离开时间的时(0-23):
cin>
p->
leave.hour;
while(p->
leave.hour<
reach.hour||p->
leave.hour>
23)
error!
leave.h