用c语言实现链式队列的创建、添加元素、删除元素、修改元素、查找元素以及销毁
时间: 2023-09-16 12:16:09 浏览: 60
下面是一个使用C语言实现链式队列的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 定义链式队列结构
typedef struct {
Node* front; // 队头指针
Node* rear; // 队尾指针
} Queue;
// 初始化链式队列
void initQueue(Queue* queue) {
queue->front = NULL;
queue->rear = NULL;
}
// 判断队列是否为空
int isQueueEmpty(Queue* queue) {
return queue->front == NULL;
}
// 入队操作
void enqueue(Queue* queue, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (isQueueEmpty(queue)) {
queue->front = newNode;
queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
}
// 出队操作
int dequeue(Queue* queue) {
if (isQueueEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
Node* temp = queue->front;
int value = temp->data;
queue->front = queue->front->next;
free(temp);
if (queue->front == NULL) {
queue->rear = NULL;
}
return value;
}
// 获取队头元素
int getFront(Queue* queue) {
if (isQueueEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
return queue->front->data;
}
// 销毁链式队列
void destroyQueue(Queue* queue) {
while (!isQueueEmpty(queue)) {
dequeue(queue);
}
}
int main() {
Queue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printf("Front element: %d\n", getFront(&queue));
int value = dequeue(&queue);
printf("Dequeued element: %d\n", value);
enqueue(&queue, 4);
printf("Front element: %d\n", getFront(&queue));
destroyQueue(&queue);
return 0;
}
```
这个示例代码实现了一个简单的链式队列。通过`initQueue`函数初始化队列,`enqueue`函数向队列中添加元素,`dequeue`函数从队列中删除元素,`getFront`函数获取队头元素,`destroyQueue`函数销毁队列。
在`main`函数中,我们先初始化队列,然后使用`enqueue`函数添加一些元素到队列中。之后,使用`getFront`函数获取队头元素并打印。接着,使用`dequeue`函数从队列中删除一个元素,并打印出被删除的元素。最后,我们再次使用`enqueue`函数添加一个元素到队列,并使用`getFront`函数获取新的队头元素并打印。最后,使用`destroyQueue`函数销毁队列。
希望这个示例能帮助你理解如何使用C语言实现链式队列!