停车场管理程序实验报告Word文档格式.docx
《停车场管理程序实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《停车场管理程序实验报告Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
基本操作:
{
InitStack(&
S)
操作结果:
构造一个空栈S.
DestroyStack(&
初始条件:
栈S已存在.
销毁栈S.
ClearStack(&
将S清为空栈.
StackEmpty(S)
若S为空栈,则返回TRUE,否则返回FALSE.
StackLength(S)
返回S的数据元素个数,即栈的长度.
GetTop(S,&
e)
栈S已存在且非空.
用e返回S的栈顶元素.
Push(&
S,e)
插入元素e为新的栈顶元素.
Pop(&
S,&
删除S的栈顶元素,并用e返回其值.
StackTraverse(S,visit())
从栈底到栈顶依次对S的每个数据元素调用函数visit().一旦visit()失败,则操作失败.
}ADTStack
3.2存储结构的定义;
#defineN3
#defineM4
#defineprice2
typedefstruct
intcarno[N];
intcartime[N];
inttop;
}SqStack;
intcarno[M];
intfront,rear;
}SqQueue;
3.3基本操作实现:
/*创建栈*/
voidInitStack(SqStack*&
s)
s=(SqStack*)malloc(sizeof(SqStack));
s->
top=-1;
}
/*摧毁栈*/
voidDestroyStack(SqStack*&
free(s);
/*查看栈是否为空*/
boolStackEmpty(SqStack*s)
returns->
top==-1;
/*进栈*/
boolPush(SqStack*&
s,inte1,inte2)
if(s->
top==N-1)
{
returnfalse;
}
top++;
carno[s->
top]=e1;
cartime[s->
top]=e2;
//printf("
>
停车场中位置:
%d\n"
e1);
returntrue;
boolStackFull(SqStack*s)
top==N-1;
/*出栈*/
boolPop(SqStack*&
s,int&
e1,int&
e2)
top==-1)
e1=s->
top];
e2=s->
top--;
voidDispStack(SqStack*s)
printf("
>
停车场中的车辆为:
"
);
inti;
for(i=s->
top;
i>
=0;
--i)
printf("
%d"
s->
carno[i]);
\n"
/*****************以下为队列*****************/
/*初始化队列*/
voidInitQueue(SqQueue*&
q)
q=(SqQueue*)malloc(sizeof(SqQueue));
q->
front=q->
rear=0;
/*释放队列*/
voidDestroyQueue(SqQueue*&
free(q);
/*查看队列是否为空*/
boolQueueEmpty(SqQueue*q)
returnq->
front==q->
rear;
boolQueueFull(SqQueue*q)
return(q->
rear+1)%M==q->
front;
/*进队*/
boolenQueue(SqQueue*&
q,inte)
if((q->
rear+1)%M==q->
front)
returnfalse;
rear=(q->
rear+1)%M;
carno[q->
rear]=e;
/*出队*/
booldeQueue(SqQueue*&
q,int&
e)
if(q->
rear)
front=(q->
front+1)%M;
e=q->
front];
3.4解题思路:
1.通过栈模拟停车场
2.通过队列模拟候车场
3.然后全程模拟即可.
3.5解题过程:
实验源代码如下:
#include<
stdio.h>
malloc.h>
typedefstruct
/****************以下为队列******************/
voidDispQueue(SqQueue*q)
候车场中的车辆为:
inti;
i=(q->
q->
while((q->
rear-i+M)%M>
0)
i=(i+1)%M;
intmain()
intcomm;
intno,e1,e2,time;
inti,j;
SqStack*st,*st1;
SqQueue*qu;
InitStack(st);
InitStack(st1);
InitQueue(qu);
while
(1)
输入指令(1:
到达2:
离开3:
停车场4:
候车场0:
退出):
scanf("
%d"
&
comm);
if(comm==0)
{
if(!
StackEmpty(st))
{
DispStack