C语言实现链队的创建、入队、出队及取队头元素
时间: 2023-10-04 14:12:42 浏览: 57
下面是 C 语言实现链队的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node* next;
};
struct queue {
struct node* front;
struct node* rear;
};
void init_queue(struct queue* q) {
q->front = q->rear = NULL;
}
int is_empty(struct queue* q) {
return q->front == NULL;
}
void enqueue(struct queue* q, int data) {
struct node* new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = data;
new_node->next = NULL;
if (is_empty(q)) {
q->front = q->rear = new_node;
} else {
q->rear->next = new_node;
q->rear = new_node;
}
}
int dequeue(struct queue* q) {
if (is_empty(q)) {
printf("Queue is empty\n");
return -1;
} else {
int data = q->front->data;
struct node* temp = q->front;
q->front = q->front->next;
free(temp);
return data;
}
}
int front(struct queue* q) {
if (is_empty(q)) {
printf("Queue is empty\n");
return -1;
} else {
return q->front->data;
}
}
int main() {
struct queue q;
init_queue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("Front element: %d\n", front(&q));
printf("Dequeued element: %d\n", dequeue(&q));
printf("Dequeued element: %d\n", dequeue(&q));
printf("Front element: %d\n", front(&q));
return 0;
}
```
代码中,`struct node` 表示链队中的节点,`struct queue` 表示链队。`init_queue` 函数用于初始化链队。`is_empty` 函数用于判断链队是否为空。`enqueue` 函数用于将元素入队。`dequeue` 函数用于将元素出队。`front` 函数用于获取队头元素。在 `main` 函数中,我们首先初始化了一个链队,然后依次将 1、2、3 入队,接着输出队头元素和出队的两个元素,最后输出新的队头元素。