八、附录 (源代码) #include
//车辆信息 struct car { };
//停车场信息
int num; int intime;
struct parking {
car N[10000]; int top; int size;
};
//便道上车辆信息 struct pavecar {
pavecar *next; int pavenum; int posnum;
};
//便车道信息 struct pave {
pavecar *front; pavecar *rear;
};
//初始化栈——停车场 void Init_parking(parking* s) { }
//初始化队列——便道 void Init_pave(pave *s) {
s->front=new (pavecar); s->top=-1;
s->rear=s->front; s->front->next=NULL; s->front->posnum=0; }
//便道上车辆进入
void pavein(pave *s,int num) {
pavecar *p;
p=new (pavecar); p->pavenum=num;
p->posnum=s->rear->posnum+1; p->next=NULL; if(s->rear==s->front) {
s->front->next=p;
}
s->rear->next=p; s->rear=p;
::carwait=::carwait+1;
}
//便道上车辆离开 int paveout(pave *s) {
pavecar *p;
int num;
p=s->front->next;
s->front->next=p->next; if(p->next==NULL) { }
num=p->pavenum; delete p; return num;
::carwait =::carwait -1;
s->rear=s->front;
}
//车辆进入停车场
int carin(parking *s,car x) {
if(s->top==Parkingroom-1) {
cout<<\停车场已满!\return (0);
} else {
s->top++; s->N[s->top]=x; ::carroom=::carroom+1; return (1);
}
}
void parkingin(parking *s,pave *p,car x) {
int k; k=carin(s,x); if(k==0) {
cout<<\
<<\停车场已满,请到便道上排队等候。\
pavein(p,x.num);
cout<<\车辆\已在便道等候\
<<\
} else {
cout<<\
<<\车辆已停入停车场。\<<\车牌号:\<<\车位号:\
<<\
}
}
//车辆离开停车场 car carout(parking *s) {
car p;
if(s->top<0) }
void parkingout(parking *s1,parking *s2,pave *p,car x) {
car y; int num,k=0;
while((s1->top>-1)&&(k==0)) {
y=carout(s1); if(y.num!=x.num) {
k=carin(s2,y);
{
p.num=NULL; p.intime=NULL; return (p);
} else {
s->top--;
::carroom=::carroom-1; return (s->N[s->top+1]);
}
} else
k=1;
}
if(y.num==x.num) {
cout<<\<<\车辆离开停车场。\<<\车牌号:\