问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它前面的车要先退出,待它走后在依次进入。
基本功能要求:
(1) 建立三个数据结构分别是:停放队列、让路栈、等候队列。
(2) 输入数据模拟管理过程,数据(入或出,车号)。
//头函数(一些声明和宏定义)
#ifndef __1PARK_H__
#define __1PARK_H__
#define SIZE 10
#define FALSE 0
#define TRUE 1
typedef struct _information
{
long int time;
char name[10];
int order;
char platenum[10];
}Mes;
//停车队列
typedef struct _queue
{
struct _information data[SIZE];
int front; // 指向队头的下标
int rear; // 指向队尾的下标
}Queue;
// 置空队
int InitQueue (Queue *q);
// 判队空否
int QueueEmpty (Queue *q);
// 判队满否
int QueueFull (Queue *q);
// 进队
int EnQueue (Queue *q, Mes *data);
int EnQueue2 (Queue *q, Mes *data);
// 出队
int DeQueue (Queue *q);
//等候队列
typedef struct _node
{
struct _information data;
struct _node *next;
}Node;
typedef struct _linkqueue
{
Node *front;
Node *rear;
}LinkQueue;
LinkQueue* Create_Queue();
int LQueueEmpty (LinkQueue *lq);
// 进队
int EnLQueue (LinkQueue *lq, Mes *data);
// 出队
int DeLQueue (LinkQueue *lq, Mes *data);
// 取队头
int GetLFront (LinkQueue *lq, Mes *data);
int Destroy_Queue (LinkQueue *lq);
//让路栈
typedef struct _stack
{
struct _information data[SIZE]; // 栈数组
int top; // 栈顶元素下标
}Stack;
// 置空栈
int InitStack (Stack *s);
// 判栈是否空栈
int StackEmpty (Stack *s);
// 进栈
int Push (Stack *s, Mes *data);
// 出栈
int Pop (Stack *s);
// 取栈顶
int GetTop (Stack *s, Mes *data);
//车的离开
void Carleave(Queue *q, Stack *s, LinkQueue *lq);
//打印函数
void Display(Queue *q, LinkQueue *lq);
//界面函数
void interface();
#endif //__1PARK_H__
//停车及主要界面文件
#include "1park.h"
#include <time.h>
#include <stdio.h>
#include <stdlib.h>