c语言银行排队管理系统链队列实现
时间: 2023-08-05 09:08:57 浏览: 52
链队列是一种基于链表实现的队列数据结构,它支持入队和出队操作,可以用来实现银行排队管理系统。下面是一个简单的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 q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q);
printf("Dequeue: %d\n", dequeue(&q));
printf("Dequeue: %d\n", dequeue(&q));
printQueue(&q);
enqueue(&q, 4);
enqueue(&q, 5);
printQueue(&q);
return 0;
}
```
上述代码定义了一个链表节点结构体 `Node` 和链队列结构体 `Queue`,并实现了初始化队列、判断队列是否为空、入队、出队、输出队列等基本操作。在 `main` 函数中,我们可以通过调用这些操作来测试链队列的功能。