用C语言设计一个主函数对链队列进行测试。主要功能有:链队列的初始化、求队列的长度、入队列操作、出队列操作、取队头元素
时间: 2024-12-16 08:28:42 浏览: 8
在C语言中,我们可以创建一个简单的链队列结构,并编写主函数来对其进行测试。首先,我们需要定义链队列的节点结构,以及队列结构体。然后,我们将实现队列的基本操作,如初始化、长度获取、入队、出队以及取队头。
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 队列结构体
typedef struct Queue {
Node* front; // 队头
Node* rear; // 队尾
int length; // 队列长度
} Queue;
// 初始化空队列
Queue* init_queue() {
Queue* queue = (Queue*)malloc(sizeof(Queue));
queue->front = queue->rear = NULL;
queue->length = 0;
return queue;
}
// 求队列长度
int get_length(Queue* queue) {
return queue->length;
}
// 入队操作
void enqueue(Queue* queue, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (queue->rear == NULL) {
queue->front = queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
queue->length++;
}
// 出队操作
int dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("Queue is empty.\n");
return -1;
}
int removedValue = queue->front->data;
Node* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(temp);
queue->length--;
return removedValue;
}
// 取队头元素
int peek(Queue* queue) {
if (queue->front == NULL) {
printf("Queue is empty.\n");
return -1;
}
return queue->front->data;
}
// 主函数测试
int main() {
Queue* queue = init_queue();
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
printf("Queue length: %d\n", get_length(queue));
printf("Peek at the front element: %d\n", peek(queue)); // 输出 1
int removedElement = dequeue(queue);
printf("Removed element: %d\n", removedElement); // 输出 1
printf("After removal, queue length: %d\n", get_length(queue));
free(queue);
return 0;
}
```
在这个示例中,我们实现了基本的链队列功能,包括初始化、获取长度、入队、出队和查看队首元素。注意,在实际项目中,应处理可能出现的内存分配错误和边界条件。
阅读全文