单链队列的实现c语言
时间: 2023-09-02 17:12:53 浏览: 58
单链队列的实现可以使用C语言中的链表来实现,具体实现如下:
```
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构体
typedef struct QueueNode {
int data;
struct QueueNode* next;
} QueueNode;
// 定义队列
typedef struct {
QueueNode* front; // 队头指针
QueueNode* rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue* queue) {
queue->front = NULL;
queue->rear = NULL;
}
// 判断队列是否为空
int isQueueEmpty(Queue* queue) {
return queue->front == NULL;
}
// 入队
void enqueue(Queue* queue, int data) {
QueueNode* node = (QueueNode*)malloc(sizeof(QueueNode));
node->data = data;
node->next = NULL;
if (queue->rear == NULL) {
queue->front = node;
queue->rear = node;
} else {
queue->rear->next = node;
queue->rear = node;
}
}
// 出队
int dequeue(Queue* queue) {
if (isQueueEmpty(queue)) {
printf("Error: Queue is empty.\n");
exit(1);
}
int data = queue->front->data;
QueueNode* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(temp);
return data;
}
// 打印队列
void printQueue(Queue* queue) {
printf("Queue: ");
QueueNode* node = queue->front;
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
// 测试队列
int main() {
Queue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printQueue(&queue);
dequeue(&queue);
printQueue(&queue);
dequeue(&queue);
printQueue(&queue);
dequeue(&queue);
printQueue(&queue);
dequeue(&queue); // Error: Queue is empty.
return 0;
}
```
上述代码实现了单链队列的基本操作,包括初始化队列、判断队列是否为空、入队、出队、打印队列等。