c语言银行排队管理系统链队列实现
时间: 2023-08-05 18:07:38 浏览: 55
以下是一个简单的 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");
exit(1);
}
Node *temp = q->front;
int data = temp->data;
if (q->front == q->rear) {
q->front = q->rear = NULL;
} else {
q->front = q->front->next;
}
free(temp);
return data;
}
void display(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
Node *curr = q->front;
while (curr != NULL) {
printf("%d ", curr->data);
curr = curr->next;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
int choice, data;
while (1) {
printf("1. Enqueue\n");
printf("2. Dequeue\n");
printf("3. Display queue\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter data to enqueue: ");
scanf("%d", &data);
enqueue(&q, data);
break;
case 2:
printf("Dequeued data: %d\n", dequeue(&q));
break;
case 3:
display(&q);
break;
case 4:
exit(0);
default:
printf("Invalid choice.\n");
}
}
return 0;
}
```
在此示例代码中,我们使用了链表来实现队列。`Node` 结构体表示节点,包括一个整数数据和一个指向下一个节点的指针。`Queue` 结构体表示队列,包括一个指向队列头部的指针和一个指向队列尾部的指针。`initQueue()` 函数用于初始化队列。`isEmpty()` 函数用于检查队列是否为空。`enqueue()` 函数用于将数据插入队列尾部。`dequeue()` 函数用于删除队列头部的数据并返回它。`display()` 函数用于显示队列中所有数据。在 `main()` 函数中,我们使用一个无限循环来让用户选择要执行的操作。