请用链式存储方式表示队列,并实现队列的基本操作,并用c语言给出代码并做好注释增加代码可读性
时间: 2023-06-01 09:05:28 浏览: 109
好的,为您介绍ChitGPT。以下是C语言链式存储方式表示队列并实现队列基本操作的代码,代码注释为增加代码可读性:
```
#include <stdio.h>
#include <stdlib.h>
//定义队列元素结构体
typedef struct QueueNode {
int data;
struct QueueNode* next;
} QueueNode;
//定义队列结构体
typedef struct Queue {
QueueNode* front;
QueueNode* rear;
int size;
} Queue;
//创建队列
Queue* createQueue() {
Queue* queue = (Queue*)malloc(sizeof(Queue));
queue->front = NULL;
queue->rear = NULL;
queue->size = 0;
return queue;
}
//销毁队列
void destroyQueue(Queue* queue) {
QueueNode* node = queue->front;
while (node != NULL) {
QueueNode* temp = node;
node = node->next;
free(temp);
}
free(queue);
}
//向队列尾部添加元素
void enqueue(Queue* queue, int data) {
QueueNode* node = (QueueNode*)malloc(sizeof(QueueNode));
node->data = data;
node->next = NULL;
if (queue->rear == NULL) {
queue->front = node;
queue->rear = node;
}
else {
queue->rear->next = node;
queue->rear = node;
}
queue->size++;
}
//从队列头部取出元素
int dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("队列为空!\n");
exit(1);
}
QueueNode* node = queue->front;
int data = node->data;
queue->front = node->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(node);
queue->size--;
return data;
}
//获取队列长度
int getSize(Queue* queue) {
return queue->size;
}
//判断队列是否为空
int isEmpty(Queue* queue) {
return queue->size == 0;
}
//测试代码
int main() {
Queue* queue = createQueue();
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
printf("队列长度:%d\n", getSize(queue));
while (!isEmpty(queue)) {
printf("%d ", dequeue(queue));
}
printf("\n");
destroyQueue(queue);
return 0;
}
```
阅读全文