C语言银行排队系统实现
时间: 2024-02-24 17:00:49 浏览: 159
银行排队系统可以采用链队列作为数据结构实现,下面是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
typedef struct node {
int data;
struct node* next;
} Node;
// 定义链队列
typedef struct queue {
Node* front; // 队头指针
Node* rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue* q) {
q->front = q->rear = NULL;
}
// 判断队列是否为空
int isEmpty(Queue* q) {
return q->front == NULL;
}
// 入队操作
void enqueue(Queue* q, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (isEmpty(q)) {
q->front = q->rear = newNode;
} else {
q->rear->next = newNode;
q->rear = newNode;
}
}
// 出队操作
int dequeue(Queue* q) {
if (isEmpty(q)) {
printf("Queue is empty\n");
return -1;
}
Node* temp = q->front;
int data = temp->data;
q->front = q->front->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(temp);
return data;
}
// 输出队列
void printQueue(Queue* q) {
printf("Queue: ");
Node* p = q->front;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
// 银行排队系统
int main() {
Queue queue;
initQueue(&queue);
int choice, id;
do {
printf("1.办理业务\t2.下一位\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入您的身份证号:");
scanf("%d", &id);
enqueue(&queue, id);
printf("请您稍等,当前排队人数为:%d\n", queueLength(&queue));
break;
case 2:
if (isEmpty(&queue)) {
printf("当前没有排队的客户\n");
} else {
int nextId = dequeue(&queue);
printf("请%d号客户前往窗口办理业务\n", nextId);
printf("当前排队人数为:%d\n", queueLength(&queue));
}
break;
default:
printf("无效的选项,请重新输入\n");
break;
}
} while (choice != 0);
return 0;
}
```
上述代码实现了银行排队系统,通过不断调用入队和出队操作来模拟客户排队和服务的过程。每个客户的身份证号作为数据项存储在队列中,当客户办理完业务后,出队列并输出下一个需要办理业务的客户的身份证号。
阅读全文