项目目的:为了深入理解队和栈的使用原理,利用一个栈两个队列简单实现停车场的管理。
Parking.h 文件:
#ifndef __PARKING_H__
#define __PARKING_H__
#define TRUE 1
#define FALSE 0
#define SIZE 20
#define TIME 86400
/*
停车场管理
问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,
汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,
一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,
由于通道窄,在它后面的车要先退出,待它走后在依次进入。
汽车离开时按停放时间收费。
基本功能要求:
(1) 建立三个数据结构分别是:停放队列、让路栈、等候队列。
(2) 输入数据模拟管理过程,数据(入或出,车号)。停车场管理
问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,
汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,
一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,
由于通道窄,在它后面的车要先退出,待它走后在依次进入。
汽车离开时按停放时间收费。
基本功能要求:
(1) 建三个数据结构分别是:停放队列、让路栈、等候队列。
(2) 输入数据模拟管理过程,数据(入或出,车号)。
*/
typedef struct _information
{
int id;
char name[SIZE];
char number[SIZE];
int parktime;
}ParkData;
//停放队列
typedef struct park_queue
{
ParkData data[SIZE];
int front; // 指向队头下标
int rear; // 指向队尾下标
}Park_Queue;
// 置空队
int InitPark_Queue (Park_Queue *q);
// 停放队列进队
int EnPark_Queue (Park_Queue *q, ParkData x);
// 停放队列出队
int DePark_Queue (Park_Queue *q, ParkData *x);
// 判停放队列空否
int Park_QueueEmpty (Park_Queue *q);
// 判停放队列满否
int Park_QueueFull (Park_Queue *q);
// 取停放队列队头
int GetFront_Park (Park_Queue *q, ParkData *x);
//让路栈
typedef struct _node
{
ParkData data;
struct _node *next;
}Node;
typedef struct way_stack
{
Node *top;
}Way_Stack;
// 创建让路栈
Way_Stack *Create_Stack();
// 判让路栈空否
int StackEmpty (Way_Stack *s);
// 进让路栈
int Push (Way_Stack *s, ParkData x);
// 出让路栈
int Pop (Way_Stack *s, ParkData *x);
// 获取让路栈顶元素
int GetTop (Way_Stack *s, ParkData *x);
// 销毁让路栈
int Destroy(Way_Stack *s, Park_Queue *q);
//等候队列
typedef struct wait_node
{
ParkData data;
struct wait_node *next; // 指向下一个结点
}Wait_Node;
typedef struct wait_queue
{
Wait_Node *front;
Wait_Node *rear;
}