c语言银行排队系统链表,银行预约排队系统(数据结构问题)
时间: 2023-11-27 07:02:57 浏览: 94
银行排队系统是一个典型的队列应用场景,可以使用链表来实现。下面是一个简单的 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 = NULL;
q->rear = NULL;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->front == NULL;
}
// 入队
void enqueue(Queue *q, int data) {
Node *node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = NULL;
if (isEmpty(q)) {
q->front = node;
q->rear = node;
} else {
q->rear->next = node;
q->rear = node;
}
}
// 出队
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
} else {
Node *node = q->front;
int data = node->data;
q->front = node->next;
free(node);
return data;
}
}
// 打印队列
void printQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
} else {
Node *node = q->front;
printf("Queue: ");
while (node) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q);
dequeue(&q);
printQueue(&q);
dequeue(&q);
dequeue(&q);
printQueue(&q);
dequeue(&q);
return 0;
}
```
上面的代码中,我们使用了链表来实现队列,其中 `Node` 结构体表示链表节点,`Queue` 结构体表示队列。`initQueue` 函数用于初始化队列, `isEmpty` 函数用于判断队列是否为空,`enqueue` 函数用于入队,`dequeue` 函数用于出队,`printQueue` 函数用于打印队列。在 `main` 函数中,我们初始化队列,入队,打印队列,出队,再打印队列。
阅读全文