队列的链式存储类型的c语言描述
时间: 2024-09-20 19:14:38 浏览: 19
队列的链式存储类型在C语言中通常是通过定义一个结构体(struct)表示队列元素,并使用动态内存分配来创建链表形式的数据结构。首先,我们可以定义一个队列节点的结构:
```c
typedef struct Node {
void* data; // 存储数据域
struct Node* next; // 指向下一个节点的指针
} QueueNode;
```
接着,我们定义队列的头结点和相关的函数:
```c
typedef struct Queue {
QueueNode* front; // 链表的头部指针
QueueNode* rear; // 链表的尾部指针
int size; // 当前队列元素数量
} Queue;
// 初始化一个空队列
Queue* createQueue() {
Queue* queue = (Queue*)malloc(sizeof(Queue));
queue->front = queue->rear = NULL;
queue->size = 0;
return queue;
}
// 入队操作(在队尾添加元素)
void enqueue(Queue* queue, void* data) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->data = data;
newNode->next = NULL;
if (queue->rear == NULL) {
queue->front = queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
queue->size++;
}
// 出队操作(删除并返回队首元素)
void* dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("Queue is empty.\n");
return NULL;
}
void* data = queue->front->data;
QueueNode* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL)
queue->rear = NULL;
free(temp);
queue->size--;
return data;
}
// 其他辅助函数如检查队列是否为空、获取大小等...
```