用c语言实现上列代码 将队列变为数组
时间: 2024-03-24 20:40:02 浏览: 65
好,以下是将队列变为数组的 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 10
struct Car {
char id[10];
int time;
};
int main() {
int n, head = 0, tail = 0;
struct Car park[MAX_N]; // 停车场数组
struct Car wait[MAX_N]; // 等待队列数组
memset(park, 0, sizeof(park));
memset(wait, 0, sizeof(wait));
scanf("%d", &n);
while (1) {
char op[2];
scanf("%s", op);
if (op[0] == 'E') { // 输入结束,输出剩余车辆停留时间并退出程序
for (int i = 0; i < tail; i++) {
printf("车辆 %s 在停车场内停留了 %d 分钟。\n", wait[i].id, op[1] - '0' - wait[i].time);
}
for (int i = 0; i < head; i++) {
printf("车辆 %s 在等待队列中等待。\n", park[i].id);
}
break;
} else if (op[0] == 'A') { // 车辆到达
char id[10];
int time;
scanf("%s %d", id, &time);
if (head < n) { // 停车场未满,将该车辆加入停车场数组
strcpy(park[head].id, id);
park[head].time = time;
printf("车辆 %s 停在了停车场的第 %d 个位置。\n", id, head + 1);
head++;
} else { // 停车场已满,将该车辆加入等待队列数组
strcpy(wait[tail].id, id);
wait[tail].time = time;
printf("车辆 %s 进入了等待队列。\n", id);
tail++;
}
} else if (op[0] == 'D') { // 车辆离开
char id[10];
int time;
scanf("%s %d", id, &time);
int found = 0;
for (int i = 0; i < head; i++) {
if (strcmp(park[i].id, id) == 0) { // 在停车场数组中查找该车辆
printf("车辆 %s 在停车场内停留了 %d 分钟。\n", id, time - park[i].time);
found = 1;
for (int j = i; j < head - 1; j++) {
park[j] = park[j + 1];
}
head--;
break;
}
}
if (!found) {
for (int i = 0; i < tail; i++) {
if (strcmp(wait[i].id, id) == 0) { // 在等待队列数组中查找该车辆
printf("车辆 %s 在等待队列中等待。\n", id);
for (int j = i; j < tail - 1; j++) {
wait[j] = wait[j + 1];
}
tail--;
break;
}
}
}
if (tail > 0) { // 如果等待队列数组中有车辆,将等待队列数组中的第一个车辆加入停车场数组
strcpy(park[head].id, wait[0].id);
park[head].time = time;
printf("车辆 %s 从等待队列中进入了停车场的第 %d 个位置。\n", wait[0].id, head + 1);
for (int i = 0; i < tail - 1; i++) {
wait[i] = wait[i + 1];
}
tail--;
head++;
}
}
}
return 0;
}
```
这段代码定义了两个结构体数组,一个用来存放停车场信息,一个用来存放等待队列信息。然后在主函数中先输入停车场的容量 n,然后进入一个循环,每次输入一组车辆信息。当输入结束时,输出停车场内剩余车辆的停留时间并退出程序。
如果输入的是车辆到达信息,先判断停车场内是否已经停满了车。如果停满了,则将该车辆加入到等待队列数组中,否则将该车辆加入到停车场数组中,并输出该车辆的停车位置。
如果输入的是车辆离开信息,先在停车场数组中查找该车辆的位置,如果找到了,则计算该车辆停留的时间,并将该车辆从停车场数组中删除。如果在停车场数组中没有找到该车辆,则在等待队列数组中查找该车辆的位置,如果找到了,则将该车辆从等待队列数组中删除。如果等待队列数组中有车辆,将等待队列数组中的第一个车辆加入停车场数组。
最后,如果输入的是结束信息,输出停车场内剩余车辆的停留时间,并清空停车场数组和等待队列数组。
阅读全文