建立链表队列,输入10个数,依次入队,输出队头元素,再依次出队打印输 出。C==
时间: 2024-12-04 08:29:33 浏览: 16
建立链表队列,首先需要创建一个节点结构,包含数据域和指向下一个节点的指针。以下是用C语言实现的一个简单链表队列的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点
Node* create_node(int value) {
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->data = value;
new_node->next = NULL;
return new_node;
}
// 队列结构体
typedef struct Queue {
Node* front; // 队头指针
Node* rear; // 队尾指针
} Queue;
// 初始化队列
void initialize(Queue* queue) {
queue->front = queue->rear = NULL;
}
// 入队操作
void enqueue(Queue* queue, int value) {
if (queue->rear == NULL) {
queue->rear = queue->front = create_node(value);
} else {
queue->rear->next = create_node(value);
queue->rear = queue->rear->next;
}
}
// 出队操作
int dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->front->data;
Node* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(temp); // 释放内存
return value;
}
// 打印队列头元素
void print_front(Queue* queue) {
if (queue->front != NULL) {
printf("Front element: %d\n", queue->front->data);
} else {
printf("Queue is empty.\n");
}
}
int main() {
Queue my_queue;
initialize(&my_queue);
for (int i = 0; i < 10; i++) {
enqueue(&my_queue, i + 1);
print_front(&my_queue); // 输出队头元素
printf("Dequeued: %d\n", dequeue(&my_queue)); // 输出并删除队头元素
}
return 0;
}
```
在这个程序中,我们实现了链表队列的基本操作:入队、出队以及打印队头元素。注意,在实际应用中,可能还需要处理一些边界情况,如队列为空等。
阅读全文