用C语言代码编写程序实现链队的基本运算
时间: 2024-10-18 08:02:41 浏览: 8
在C语言中,我们可以使用结构体定义节点,并通过指针来创建链表数据结构,进而实现队列的基本操作,如入队(enqueue)、出队(dequeue)和查看队首元素(front)。这里是一个简单的单向链队实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链队节点结构
typedef struct QueueNode {
int data; // 节点数据
struct QueueNode* next; // 指向下一个节点的指针
} QueueNode;
// 初始化空队列
QueueNode* initQueue() {
return NULL;
}
// 入队(在链尾添加元素)
void enqueue(QueueNode** front, int value) {
if (*front == NULL) {
*front = (QueueNode*)malloc(sizeof(QueueNode));
(*front)->data = value;
(*front)->next = NULL;
} else {
QueueNode* new_node = (QueueNode*)malloc(sizeof(QueueNode));
new_node->data = value;
new_node->next = *front;
*front = new_node;
}
}
// 出队(删除并返回队首元素,如果队列为空则返回NULL)
int dequeue(QueueNode** front) {
if (*front == NULL) {
return -1; // 队列为空,返回错误码
}
int value = (*front)->data;
QueueNode* temp = *front;
*front = (*front)->next;
free(temp);
return value;
}
// 查看队首元素(不修改队列,返回队首元素值,若队列为空则返回0)
int front(QueueNode* front) {
return front ? front->data : 0; // 返回队首元素的值,如果没有队首,则返回0
}
// 示例使用
int main() {
QueueNode* queue = initQueue();
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printf("Front element: %d\n", front(queue)); // 输出:Front element: 1
int removed_value = dequeue(&queue); // 出队操作
if (removed_value != -1) {
printf("Dequeued value: %d\n", removed_value); // 输出:Dequeued value: 1
}
return 0;
}
阅读全文