每天水一水 水水更健康

来源:互联网 发布:小米云下载软件 编辑:程序博客网 时间:2024/04/29 16:35
///设定停车场有(Size)个车位///有趣
///同学们要是参考的话麻烦改一下 这个是要交作业的 如有雷同 如何是好? #include <bits/stdc++.h>using namespace std;int n;int Size = 5;typedef struct Car{    int num;    time_t time;    int price;} CarNode;typedef struct QNode{    CarNode data;    struct QNode *next;} QNode , *QueuePtr;typedef struct{    QueuePtr front;    QueuePtr rear;} LinkQueue;///注意这里队列的使用方法CarNode car[5];void initcar(){    for(int i=1; i<=n; i++)    {        cout<<"请输入第"<<i<<"辆车的车牌号"<<endl;        cin>>car[i].num;        car[i].time = time(NULL);        car[i].price = 0;    }}void InitQueue(LinkQueue *Q){    Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));    if(!Q->front) exit(0);    Q->front->next = NULL;}void EnQueue(LinkQueue *Q, CarNode e){    QueuePtr p;    p = (QueuePtr)malloc(sizeof(QNode));    if(!p) exit(0);    p->data = e;    p->next = NULL;    Q->rear->next = p;    Q->rear = p;}void Pop(LinkQueue *Q, CarNode *e){    if(Q->front == Q->rear) return;    QNode *p;    p = Q->front->next;    *e = p->data;    Q->front->next = p->next;    if(Q->rear == p)        Q->rear = Q->front;    free(p);}bool QEmpty(LinkQueue *Q){      return Q->front == Q->rear;}void carin(LinkQueue *Q){    if(n < Size)    {        cout<<"请输入车牌信息:"<<endl;        cin>>car[++n].num;        car[n].time = time(NULL);    }    else    {        CarNode e;        cout<<"请输入车牌信息:"<<endl;        cin>>e.num;        e.price = 0;        cout<<"抱歉,停车场车位已满,请您耐心等待"<<endl;        EnQueue(Q, e);    }}void carout(LinkQueue *Q){    int Num;    cout<<"请输入车牌信息:"<<endl;    cin>>Num;    int i;    for(i=1; i<=n; i++)        if(car[i].num == Num) break;    int Time = time(NULL) - car[i].time;    cout<<"该车停车期间共需缴纳停车费"<<Time<<"元"<<endl;    car[i].num = -1;    Size++;    while(n<Size && !QEmpty(Q))    {        CarNode e;        Pop(Q, &e);        car[++n] = e;    }}void display(){    for(int i=1; i<=n; i++)    {         if(car[i].num != -1)            printf("车牌:%d\n花费:%d\n",car[i].num, car[i].price);    }    cout<<n<<endl;}void Qdisplay(LinkQueue *Q){    QueuePtr p = Q->front->next;    while(p)    {        cout<<p->data.num<<" ";        p = p->next;    }    cout<<endl;}void work(LinkQueue *Q){    int a;    while(cin>>a)    {        if(!a) return;        else switch(a)            {            case 1:                carin(Q);                break;            case 2:                carout(Q);                break;            case 3:                display();                break;            case 4:                Qdisplay(Q);                break;            }        cout<<"1:车辆进入\n2:车辆离开\n3:显示停车场内车辆信息\n4:显示等待进入的车辆\n0:退出系统\n请选择操作:\n";    }}int main(){    LinkQueue Q;    InitQueue(&Q);    cout<<"请输入停车场最初的车辆数目(温馨提示:输入数目不能大于"<<Size<<"):"<<endl;    cin>>n;    cout<<"请依次输入车辆车牌信息:"<<endl;    initcar();    display();    cout<<"现在还有"<<Size - n<<"个停车位可以使用"<<endl;    cout<<"有如下操作:\n1:车辆进入\n2:车辆离开\n3:显示停车场内车辆信息\n0:退出系统\n请选择操作:\n";    work(&Q);    return 0;}

0 0
原创粉丝点击