编写c语言程序,完成模拟银行客户排队叫号过程,采用链队列设计,完成如下功能: (1)初始化银行排队队列; (2) 取号进队; (3)排队等候; (4)叫号服务; (5) 不再排队,怎样处理? (6) 下班后,怎样销毁队列并运行代码测试
时间: 2024-10-19 08:09:37 浏览: 120
银行排队叫号系统实现
5星 · 资源好评率100%
为了编写一个简单的C语言程序模拟银行客户排队叫号过程,我们可以按照以下步骤:
1. 初始化银行排队队列:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct QueueNode {
int customerID;
struct QueueNode *next;
} QueueNode;
QueueNode* createQueue() {
QueueNode *queue = (QueueNode*)malloc(sizeof(QueueNode));
queue->next = NULL;
return queue;
}
void initQueue(QueueNode **head) {
*head = createQueue();
}
```
2. 取号进队:
```c
void enqueue(QueueNode **head, int customerID) {
QueueNode *newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->customerID = customerID;
newNode->next = *head;
*head = newNode;
}
```
3. 排队等候:
```c
void printQueue(QueueNode *head) {
QueueNode *temp = head;
while (temp != NULL) {
printf("Customer %d is waiting\n", temp->customerID);
temp = temp->next;
}
}
```
4. 叫号服务:
```c
void serve(int *currentCustomer, QueueNode **head) {
if (*currentCustomer == -1) {
printf("No customers in the queue.\n");
} else {
printf("Serving Customer %d...\n", *currentCustomer);
(*currentCustomer)++;
QueueNode *temp = head;
while (temp != NULL && temp->customerID != *currentCustomer) {
temp = temp->next;
}
if (temp == NULL) {
printf("Customer ID mismatch!\n");
} else {
temp->customerID = -1; // 标记该位置已服务
}
}
}
```
5. 不再排队处理:
当某个客户完成服务并离开时,如果其位置上的客户ID为-1,则表示此位置已被标记,不再需要处理。若找到这样的节点,可以删除它,然后检查队列是否为空。
```c
void deleteUnservedCustomers(QueueNode **head) {
QueueNode *prev = NULL, *current = head;
while (current != NULL && current->customerID == -1) {
prev = current;
current = current->next;
free(prev);
}
*head = current;
}
```
6. 下班后销毁队列及运行测试:
```c
int main() {
QueueNode *head = NULL;
int currentCustomer = -1;
// 初始化队列
initQueue(&head);
// 测试示例操作
enqueue(&head, 100); // 取号100
enqueue(&head, 200); // 取号200
enqueue(&head, 300); // 取号300
printQueue(head); // 打印当前队列
serve(¤tCustomer, &head); // 叫号服务100
deleteUnservedCustomers(&head); // 删除已服务的顾客
// ... 照样测试其他操作,最后关闭进程前记得释放内存
free(head);
return 0;
}
```
阅读全文