```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXLEN 10 typedef struct node { int id; // 客户编号 char card[MAXLEN]; // 客户银行卡号码 char type[MAXLEN]; // 客户类型 int wait; // 该客户前面的客户数 struct node *next; } Node; Node *head = NULL; // 队列头指针 Node *tail = NULL; // 队列尾指针 int id = 0; // 客户编号 // 入队 void enqueue(char *card, char *type) { Node *new_node = (Node *)malloc(sizeof(Node)); new_node->id = ++id; strcpy(new_node->card, card); strcpy(new_node->type, type); new_node->wait = 0; new_node->next = NULL; if (tail == NULL) { // 队列为空 head = new_node; tail = new_node; } else { tail->next = new_node; tail = new_node; } Node *p = head; while (p != NULL) { // 更新等待人数 p->wait++; p = p->next; } printf("IN:%d %s %s %d\n", new_node->id, new_node->card, new_node->type, new_node->wait - 1); } // 退出系统 void quit() { printf("GOOD BYE!\n"); Node *p = head; while (p != NULL) { // 释放链表空间 Node *temp = p; p = p->next; free(temp); } } int main() { char op[MAXLEN], card[MAXLEN], type[MAXLEN]; while (scanf("%s", op) != EOF) { if (strcmp(op, "IN") == 0) { scanf("%s %s", card, type); enqueue(card, type); } else if (strcmp(op, "QUIT") == 0) { quit(); break; } } return 0; } ```
时间: 2024-01-15 18:05:49 浏览: 73
你可以在程序中添加一个函数来输出队列中的信息,如下所示:
```c
// 输出队列中的信息
void print_queue() {
Node *p = head;
while (p != NULL) {
printf("%d %s %s %d\n", p->id, p->card, p->type, p->wait);
p = p->next;
}
}
```
然后在主函数中添加一个判断语句,如果用户输入的是 "PRINT",则调用该函数输出队列中的信息,如下所示:
```c
int main() {
char op[MAXLEN], card[MAXLEN], type[MAXLEN];
while (scanf("%s", op) != EOF) {
if (strcmp(op, "IN") == 0) {
scanf("%s %s", card, type);
enqueue(card, type);
} else if (strcmp(op, "PRINT") == 0) {
print_queue();
} else if (strcmp(op, "QUIT") == 0) {
quit();
break;
}
}
return 0;
}
```
这样,当用户输入 "PRINT" 时,程序会输出队列中的信息。你也可以将输出的信息存储在一个列表中,然后进行其他操作。
阅读全文