//这是一个简单的停车场作业,目前为止只能实现停车,剩下的代码有问题,还在解决中,就先不拿出来了
#include"Parking.h"
#include<stdio.h>
void menu()
{
system("clear");
printf("***********************************************************************\n");
printf("* *\n");
printf("* Welcome to our park *\n");
printf("* *\n");
printf("* 1 : 停 车 *\n");
printf("* 2 : 离 开 *\n");
printf("* 3 : 查 看 *\n");
printf("* 4 : 退 出 *\n");
printf("* *\n");
printf("* 请输入需要的操作(1-4): *\n");
printf("* MADE BY SUBAOXUN *\n");
printf("* *\n");
printf("***********************************************************************\n");
}
//创建停车场队列与等候队列
int InitQueue (ParkQueue *p)
{
if(p==NULL)
{
errno = ERROR;
return FALSE;
}
p->front=0;
p->rear=0;
return TRUE;
}
//创建等候区队列
/*
int InitQueue (ParkQueue *w)
{
if(w==NULL)
{
errno = ERROR;
return FALSE;
}
w->front=0;
w->rear=0;
return TRUE;
}
*/
//停车场是否为空
int QueueEmpty (ParkQueue *p)
{
if (p == NULL)
{
errno = ERROR;
return FALSE;
}
return p->front == p->rear;
}
//停车场是否停满
int QueueFull (ParkQueue *p)
{
if (p == NULL)
{
errno = ERROR;
return FALSE;
}
return p->front == (p->rear+1)%SIZE;
}
//进停车场
int EnQueue (ParkQueue *p, QueueData x)
{
if (p == NULL)
{
errno = ERROR;
return FALSE;
}
if (QueueFull(p))
{
errno = FULL_QUEUE;
return FALSE;
}
p->rear = (p->rear+1) % SIZE;
p->data[p->rear] = x;
return TRUE;
}
//出停车场
int DeQueue (ParkQueue *p, QueueData *x)
{
if (p == NULL)
{
errno = ERROR;
return FALSE;
}
if (QueueEmpty(p))
{
errno = EMPTY_QUEUE;
return FALSE;
}
p->front = (p->front + 1) % SIZE;
*x = p->data[p->front];
return TRUE;
}
//让路栈
int InitStack (Stack *S)
{
if (S == NULL)
{
errno = ERROR;
return FALSE;
}
S->top = -1;
}
// 空返回真,否则返回假
int StackEmpty (Stack *S)
{
if (S == NULL)
{
errno = ERROR;
return FALSE;
}
return S->top == -1;
}
// 满返回真,否则返回假
int StackFull (Stack *s)
{
if (s == NULL)
{
errno = ERROR;
return FALSE;
}
return s->top == (SIZE-1);
}
int Push (Stack *s, StackData x)
{
if (s == NULL)
{
errno = ERROR;
return FALSE;
}
// 判断是否满栈
if (StackFull(s))
{
errno = FULL_STACK;
return FALSE;
}
/*
s->data[top+1] = x;
s->top++;
*/
s->data[++s->top] = x;
return TRUE;
}
//出栈
int Pop (Stack *s, StackData *x)
{
if (s == NULL)
{
errno = ERROR;
return FALSE;
}
// 判断是否空栈
if (StackEmpty(s))
{
errno = EMPTY_STACK;
return FALSE;
}
/*
*x = s->data[s->top];
s->top--;
*/
*x = s->data[s->top--];
return TRUE;
}
//停车函数
int Parking(ParkQueue *p,ParkQueue *w)
{
if(p==NULL)
return FALSE;
if(w==NULL)
return FALSE;
if(QueueFull(p)==TRUE)
{
printf("停车场已满\n");
//此时就需要把车停在便道等待区里
int numw;
printf("请输入车牌号: ");
scanf("%d",&numw);
EnQueue (w, numw);
}
else
{
int num;
printf("请输入车牌号:\n");
scanf("%d",&num);
EnQueue (p, num);
}
}