c语言实现queue
时间: 2024-10-15 13:00:51 浏览: 28
在C语言中,队列(Queue)是一种先进先出(First In First Out,FIFO)的数据结构,可以使用数组或链表来实现。这里我们以链表为例简单介绍一种常见的队列实现:
**使用链表实现**
```c
// 队列节点结构体
typedef struct QueueNode {
int data; // 数据域
struct QueueNode* next; // 指向下一个元素的指针
} QueueNode;
// 队列结构体
typedef struct Queue {
QueueNode* front; // 指向前一个元素的指针,表示队首
QueueNode* rear; // 指向当前最后一个元素的指针,表示队尾
int size; // 队列大小
} Queue;
// 初始化队列
void initQueue(Queue* queue) {
queue->front = NULL;
queue->rear = NULL;
queue->size = 0;
}
// 插入元素到队尾
void enqueue(Queue* queue, int value) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->data = value;
newNode->next = NULL;
if (queue->rear == NULL) {
queue->front = queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
queue->size++;
}
// 从队头删除并返回元素
int dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->front->data;
QueueNode* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(temp);
queue->size--;
return value;
}
// 判断队列是否为空
int isEmpty(Queue* queue) {
return queue->front == NULL && queue->size == 0;
}
// 获取队列长度
int getSize(Queue* queue) {
return queue->size;
}
阅读全文