⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 代码.txt

📁 数据结构实验报告。停车场管理。 完整的实验报告。
💻 TXT
字号:
#include <stdio.h>
#include <malloc.h>
typedef struct
{
    int number[1000];
    int entertime[1000];
    int top;
}SeqStack;
typedef struct qnode
{
    int number;

    int entertime;
    struct qnode * next;
}LQNode;
typedef struct
{
    LQNode * front;
    LQNode * rear;
}LQueue;
void StackInitiate(SeqStack *S)
{
    S->top = 0;
}
void StackPush(SeqStack *S,int x,int y)
{
    S->number[S->top] = x ;
    S->entertime[S->top] = y ;
    S->top++;
}
void StackPop(SeqStack *S,int *x,int *y)
{
    S->top--;
    *x = S->number[S->top];
    *y = S->entertime[S->top];
}
void QueueInitiate(LQueue *Q)
{
    Q->rear = NULL;
    Q->front = NULL;
}
void QueueAppend(LQueue *Q,int x,int y)
{
    LQNode *p;
    p=(LQNode *)malloc(sizeof(LQNode));
    p->number = x ;
    p->entertime = y ;
    p->next = NULL;
    if(Q->rear != NULL) Q->rear->next = p;
    Q->rear=p;
    if(Q->front == NULL) Q->front = p;
}
void QueueDelete(LQueue *Q,int *x,int *y)
{
    LQNode *p;
    *x=Q->front->number;
    *y=Q->front->entertime;
    p=Q->front;
    Q->front = Q->front->next;
    if(Q->front == NULL) Q->rear = NULL;
    free(p);
}
int main()
{
    LQueue Q;
    SeqStack S1,S2;
    int n,i,num,time,num1,time1,num2,time2,k,active;

    StackInitiate(&S1);
    StackInitiate(&S2);
    QueueInitiate(&Q);
    printf("输入一个n代表停车场内最多可停车数:");
    scanf("%d",&n);
 k=1;
    while(1)
    {
        
        printf("分别输入状态(1到达,2离开),车牌,时间(费用2元/小时,输入3,0,0结束):\n");
        scanf("%d,%d,%d",&active,&num,&time); 
        if(active==3 && num ==0 && time==0) break;
        if(active==1)
        {
            if(S1.top<n) 
            {
                StackPush(&S1,num,time);
                printf("在停车场%d个车位的第%d个车位。\n",n,S1.top);
            }
            else 
            {
                QueueAppend(&Q,num,time);
                printf("在便道的第%d个位置。\n",k);
                k++;
            }
        }
        else if(active==2)
        {
            while(1)
            {
                StackPop(&S1,&num1,&time1);
                if(num1!=num)
                {
                    StackPush(&S2,num1,time1);
                }
                if(num1==num) 
                {
                    printf("停留%d小时,费用%d元。\n",time-time1,2*(time-time1));
                    while(S2.top!=0)
                    {
                        StackPop(&S2,&num1,&time1);
                        StackPush(&S1,num1,time1);
                    }
                    if(k>1)
                    {
                    QueueDelete(&Q,&num2,&time2);k--;
                    StackPush(&S1,num2,time);
                    }
                    break;
                }
            }
        }
        else printf("输入错误!\n");
   }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -