yonc语言实现队列加注释
时间: 2023-05-28 16:05:02 浏览: 89
Go语言的队列和堆栈实现方法
// 定义队列的结构体
struct Queue {
int* data; // 存储队列元素的数组
int front; // 队首下标
int rear; // 队尾下标
int size; // 队列的容量
};
typedef struct Queue Queue;
// 初始化队列
void initQueue(Queue* queue, int size) {
queue->data = (int*)malloc(sizeof(int) * size); // 动态分配数组空间
queue->front = queue->rear = 0; // 初始化队首和队尾下标为0
queue->size = size; // 设置队列的容量
}
// 判断队列是否为空
bool isEmpty(Queue* queue) {
return queue->front == queue->rear; // 队首和队尾下标相等时,队列为空
}
// 判断队列是否已满
bool isFull(Queue* queue) {
return (queue->rear + 1) % queue->size == queue->front; // 队尾下标加一后与队首下标相等时,队列已满
}
// 入队操作
bool enqueue(Queue* queue, int element) {
if (isFull(queue)) { // 如果队列已满,入队失败
return false;
}
queue->data[queue->rear] = element; // 将元素添加到队尾
queue->rear = (queue->rear + 1) % queue->size; // 更新队尾下标
return true;
}
// 出队操作
bool dequeue(Queue* queue, int* element) {
if (isEmpty(queue)) { // 如果队列为空,出队失败
return false;
}
*element = queue->data[queue->front]; // 取出队首元素
queue->front = (queue->front + 1) % queue->size; // 更新队首下标
return true;
}
// 销毁队列
void destroyQueue(Queue* queue) {
free(queue->data); // 释放数组空间
queue->data = NULL;
queue->front = queue->rear = queue->size = 0; // 将队列各个成员变量重置为0
}
阅读全文