📄 停车场管理(标准).txt
字号:
#include"stdio.h"
#include"stdlib.h"
//#include <iostream.h>
#define price 5
int scount=0;
int Qcount=0;
struct bus
{
int number;
int time;
};
typedef struct
{
struct bus data[100];
int *base;
int *top;
int stacksize;
}stack;
typedef struct QNode
{
char data;
struct QNode *next;
}QNode,*LinkQueueNode;
typedef struct
{
LinkQueueNode front;
LinkQueueNode rear;
}LinkQueue;
int Initstack(stack &s)
{
s.base=(int*)malloc(100*sizeof(int));
if(!s.base)exit(0);
s.top=s.base;
s.stacksize=100;
return 1;
}
int initQueue(LinkQueue &Q)
{
Q.front=Q.rear=(LinkQueueNode)malloc(sizeof(LinkQueueNode));
if(!Q.front)exit(-1);
Q.front->next=NULL;
return 1;
}
int IsEmpty(stack s)
{
if(s.top==s.base)return 1;
return 0;
}
int Isempty(LinkQueue Q)
{
if(Q.front==Q.rear)return 1;
return 0;
}
void push(stack &s,int e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(int*)realloc(s.base,(s.stacksize+10)*sizeof(int));
if(!s.base)exit(0);
s.top=s.base+s.stacksize;
s.stacksize+=10;
}
*s.top++=e;
}
int EnQueue(LinkQueue &Q,int e)
{
LinkQueueNode p;
p=(LinkQueueNode)malloc(sizeof(QNode));
if(!p)exit(-1);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return 1;
}
int pop(stack &s,int &e)
{
if(s.top==s.base)exit(0);
e=*--s.top;
return 1;
}
char DeQueue(LinkQueue &Q,int &e)
{
LinkQueueNode p;
if(Q.front==Q.rear)return 0;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)Q.rear=Q.front;
free(p);
return e;
}
void main()
{
int t,e,i=1,num;
char ch=' ',c;
bool flag=1;
stack s;
Initstack(s);
stack S;
Initstack(S);
LinkQueue Q;
initQueue(Q);
printf("请输入车场内能够停车的最大数量为:\n");
scanf("%d",&num);
ch=getchar();
printf("请输入到达或离开、车牌号、车到达或离开的时间:\n");
scanf("%c %d %d",&ch,&s.data[i].number,&s.data[i].time);
while(ch!='E')
{
if(ch=='A') //进车
{
if(scount<num)
{
push(s,s.data[i].number);
++scount;
printf("位置为:%d\n",scount);
printf("继续输入:\n");
}
else
{
EnQueue(Q,s.data[i].number) ;
++Qcount;
printf("您停在了车道上的第%d个位置\n",Qcount);
}
}
else if(ch=='D')
{
while(1)
{
pop(s,e);
push(S,e);
if(e==s.data[i].number)
{
flag=1;
break;
}
else flag=0;
}
if(flag)
{
t=s.data[i].time-s.data[e].time;
printf("停留的时间为:%d\n",t);
printf("应收取的费用为:%d\n",t*price);
printf("继续输入:\n");
pop(S,e);
--scount;
while(!IsEmpty(S))
{
pop(S,e);
push(s,e);
}
if(!Isempty(Q))
{
DeQueue(Q,e);
push(s,e);
s.data[num+Qcount].time=s.data[i].time;
--Qcount;
++scount;
}
}
else
printf("没有这辆车或您要的车还在车道中,请重新输入");
}
i++;
c=getchar();
scanf("%c %d %d",&ch,&s.data[i].number,&s.data[i].time);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -