📄 代码.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 + -