基于数据结构中的队列与栈实现的停车场管理程序

这是是停车场管理程序主要运用了数据结构中的队列与栈的组合

先来看看效果:

基于数据结构中的队列与栈实现的停车场管理程序_第1张图片

#include 
#include 
#include 
#include 
#include "Stack.cpp"
#define MaxSize 20///控制停车场停车的车辆数
typedef int ElemType;
int  h=0;///用来记录停车场停几辆车
ElemType e;
int k=0;///记录结构体的次序
int sa=2;
int h_wait=0;
struct Time
{
    int id;
    int hour;
    int Minute;
    int Second;
} tm[100];
typedef struct
{
    ElemType data[MaxSize];
    int front,rear;

} SqQueue;
///初始化栈
void InitQueue(SqQueue *&q)
{
    q = (SqQueue *)malloc(sizeof(SqQueue));
    q ->front=q ->rear=0;
}
void DestoryQueue(SqQueue *&q)
{
    free(q);
}
bool QueueEmpty(SqQueue *q)
{
    return q ->front==q ->rear;
}
bool enQueue(SqQueue *&q,ElemType e)
{
    if((q ->rear+1)%MaxSize==q ->front)
        return false;
    q ->rear=(q ->rear+1)%MaxSize;
    q ->data[q ->rear]=e;
    return true;
}
bool deQueue(SqQueue *&q,ElemType &e)
{
    if(q ->front==q ->rear)
        return false;
    q ->front=(q ->front+1)%MaxSize;
    e =q ->data[q ->front];
    return true;
}
int QueueLength(SqQueue *q)
{
    return (q ->rear-q ->front+MaxSize)%MaxSize;
}
void display(SqQueue *q)
{
    system("cls");

    for(int i=1; i<=h_wait; i++)
        printf("\t\t  车牌号:%d ",q ->data[i]);
    printf("\n");
    printf("\n\t\t  ***************************************\n");
    printf("\t\t  *            一共有%d辆车              *",h_wait);
    printf("\n\t\t  ***************************************\n");
}
int GetTimeHour()///得到当前的小时
{
    SYSTEMTIME sys;
    GetLocalTime( &sys );
    return sys.wHour;
}
int GetTimeSecond()///得到当前的秒
{
    SYSTEMTIME sys;
    GetLocalTime( &sys );
    return sys.wSecond;
}
int GetTimeMinute()///得到当前的分钟
{
    SYSTEMTIME sys;
    GetLocalTime( &sys );
    return sys.wMinute;
}
void EnterStation(SqQueue *&q,SqStack *&s)///进入停车场
{
    int number;
    int a,b;///b代表车牌号
    /*
    **通过h来判断停车区是否已经满啦,
    **若h>=20进入候车区
    */
    if(h>=3)
    {
        printf("停车场的停车位已满,请选择:\n");
        printf(" 1:进入候车区    2:退出   \n");
        scanf("%d",&a);
        if(a==1)
        {
            printf("请输入车辆的车牌号:\n");
            scanf("%d",&b);
            enQueue(q,b);///让车辆进入队列
            h_wait++;
            system("cls");
            printf("\n\t\t  ***************************************\n");
            printf("\t\t  *恭喜你车牌号为%d的车辆进入候车场成功*",b);
            printf("\n\t\t  ***************************************\n");
            //lang();///返回主菜单
        }
        if(a==2)
        {
            exit(0);
        }

    }
    else
    {
        ///进入停车场
        printf("请输入车辆的车牌号:\n");
        scanf("%d",&b);
        Push(s,b);
        ///引入结构体来记录车辆的车牌号和时间
        tm[k].id=b;
        tm[k].Second=GetTimeSecond();
        tm[k].Minute=GetTimeMinute();
        tm[k].hour=GetTimeHour();
        k++;
        h++;
        system("cls");
        printf("\n\t\t  ***************************************\n");
        printf("\t\t  *恭喜你车牌号为%d的车辆进入停车场成功*",b);
        printf("\n\t\t  ***************************************\n");
    }
}
void Stackdisplay(SqStack *s)
{
    int a[100],b;
    for(int i=0; i

以上的是一个主函数,下面是个头文件

#include 
#define MaxSize 20
#include 
#include
#include
typedef int ElemType;
using namespace std;
typedef struct sqStack
{
    ElemType data;
    struct sqStack *next;
} SqStack;
///初始化栈
void InitStack(SqStack *&s)
{
    s=(SqStack *)malloc(sizeof(SqStack));
    s ->next=NULL;
}
void DestoryStack(SqStack *&s)
{
    SqStack *p=s,*q=s ->next;
    while(q!=NULL)
    {
        free(p);///先释放p节点,及刚开始释放头结点
        p=q;///p往后移动
        q=p ->next;///q往后移
    }
    free(p);
}
bool StackEmpty(SqStack *s)
{
    return s ->next==NULL;
}
void Push(SqStack *&s,ElemType e)
{
    SqStack *p                                             ;
    p=(SqStack *)malloc(sizeof(SqStack));
    p ->data=e;
    p ->next=s ->next;
    s ->next=p;

}
bool Pop(SqStack *&s,ElemType &e)
{
    SqStack *p;
    if(s ->next==NULL)
        return false;
    p=s ->next;
    e=p ->data;
    s ->next=p ->next;
    free(p);
    return true;
}
bool GetTop(SqStack *&s,ElemType &e)
{
    if(s ->next=NULL)
        return false;
    e=s ->next->data;
    return true;
}

大致就这样

你可能感兴趣的:(数据结构)