c语言数据结构中的链队列代码完整版
时间: 2024-11-04 22:11:47 浏览: 7
在C语言中,链队列是一种线性数据结构,它通过节点(data和指向下一个节点的指针)链接起来实现先进先出(FIFO)的操作。下面是一个简单的单向链表实现的循环链队列的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 链队列节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} QueueNode;
// 初始化链队列为空
QueueNode* createQueue() {
return (QueueNode*)malloc(sizeof(QueueNode));
}
// 在队尾插入元素
void enqueue(QueueNode** front, int value) {
QueueNode* newNode = createQueue();
if (*front == NULL) {
*front = newNode;
newNode->next = *front;
} else {
newNode->next = *front;
(*front)->next = newNode;
}
}
// 从队首删除并返回元素
int dequeue(QueueNode** front) {
if (*front == NULL) {
printf("Error: Queue is empty.\n");
return -1;
}
int removedValue = (*front)->data;
QueueNode* temp = *front;
*front = (*front)->next;
free(temp);
return removedValue;
}
// 打印链队列
void printQueue(QueueNode* front) {
QueueNode* current = front;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
QueueNode* front = createQueue();
// 插入元素
enqueue(&front, 10);
enqueue(&front, 20);
enqueue(&front, 30);
// 打印队列
printQueue(front); // 输出:30 20 10
// 删除元素并打印
printf("Removed element: %d\n", dequeue(&front)); // 输出:30
printQueue(front); // 输出:20 10
return 0;
}
```
阅读全文