c语言队列的初始化代码
时间: 2023-09-17 21:13:59 浏览: 69
以下是使用 C 语言初始化队列的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构体类型
typedef struct queue {
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列长度
int *data; // 存储数据的指针
} Queue;
// 初始化队列
void init_queue(Queue* q, int queue_size) {
q->front = q->rear = 0; // 队头、队尾指针初始值为0
q->size = queue_size; // 队列长度设置为参数值
q->data = (int*)malloc(queue_size * sizeof(int)); // 分配存储数据的空间
}
// 销毁队列
void destroy_queue(Queue* q) {
free(q->data); // 释放存储数据的空间
}
// 判断队列是否为空
int is_empty(Queue q) {
return q.front == q.rear;
}
// 判断队列是否已满
int is_full(Queue q) {
return (q.rear + 1) % q.size == q.front;
}
// 入队操作
int enqueue(Queue* q, int value) {
if (is_full(*q)) {
return 0; // 队列已满,入队失败
}
q->data[q->rear] = value; // 将元素存入队列尾部
q->rear = (q->rear + 1) % q->size; // 队尾指针向后移动一位
return 1; // 入队成功
}
// 出队操作
int dequeue(Queue* q, int* value) {
if (is_empty(*q)) {
return 0; // 队列为空,出队失败
}
*value = q->data[q->front]; // 将队头元素取出
q->front = (q->front + 1) % q->size; // 队头指针向后移动一位
return 1; // 出队成功
}
int main() {
Queue q;
init_queue(&q, 5);
printf("队列是否为空:%d\n", is_empty(q)); // 输出:队列是否为空:1
printf("队列是否已满:%d\n", is_full(q)); // 输出:队列是否已满:0
enqueue(&q, 1);
printf("队列是否为空:%d\n", is_empty(q)); // 输出:队列是否为空:0
printf("队列是否已满:%d\n", is_full(q)); // 输出:队列是否已满:0
int value;
dequeue(&q, &value);
printf("出队的元素:%d\n", value); // 输出:出队的元素:1
destroy_queue(&q);
return 0;
}
```