c语言银行排队管理系统链队列实现
时间: 2023-08-05 15:07:37 浏览: 82
链队列是一种基于链表结构实现的队列,适用于需要频繁进行插入和删除操作的情况。下面是一个简单的 C 语言银行排队管理系统链队列实现的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构体
typedef struct node {
int data;
struct node *next;
} Node;
// 定义链队列结构体
typedef struct {
Node *front; // 队头指针
Node *rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
Node *node = (Node *) malloc(sizeof(Node));
node->next = NULL;
queue->front = queue->rear = node;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}
// 入队操作
void enQueue(Queue *queue, int data) {
Node *node = (Node *) malloc(sizeof(Node));
node->data = data;
node->next = NULL;
queue->rear->next = node;
queue->rear = node;
}
// 出队操作
int deQueue(Queue *queue) {
if (isEmpty(queue)) {
printf("队列为空,无法出队!\n");
return -1;
}
Node *node = queue->front->next;
int data = node->data;
queue->front->next = node->next;
if (node == queue->rear) {
queue->rear = queue->front;
}
free(node);
return data;
}
// 输出队列中的元素
void printQueue(Queue *queue) {
if (isEmpty(queue)) {
printf("队列为空!\n");
return;
}
printf("队列中的元素为:");
Node *node = queue->front->next;
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
int main() {
Queue queue;
initQueue(&queue);
printf("入队操作:\n");
enQueue(&queue, 1);
enQueue(&queue, 2);
enQueue(&queue, 3);
printQueue(&queue);
printf("出队操作:\n");
printf("出队元素为:%d\n", deQueue(&queue));
printf("出队元素为:%d\n", deQueue(&queue));
printf("出队元素为:%d\n", deQueue(&queue));
printf("出队元素为:%d\n", deQueue(&queue));
return 0;
}
```
在上面的示例中,我们通过定义一个链表结构体和一个链队列结构体,实现了队列的基本操作,包括初始化队列、判断队列是否为空、入队操作、出队操作和输出队列中的元素。在主函数中,我们进行了入队操作和出队操作,并输出了队列中的元素。
阅读全文