循环队列初始化、入队、出队、取对头元素和求队长算法代码
时间: 2023-06-02 11:05:55 浏览: 70
以下是循环队列的算法代码:
// 定义循环队列结构体
typedef struct {
int* base; // 存储空间基址
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列长度
} CircularQueue;
// 初始化循环队列
void InitQueue(CircularQueue* queue, int size) {
queue->base = (int*)malloc(size * sizeof(int));
queue->front = queue->rear = 0;
queue->size = size;
}
// 入队
void EnQueue(CircularQueue* queue, int data) {
if ((queue->rear + 1) % queue->size == queue->front) {
printf("Queue is full!");
return;
}
queue->base[queue->rear] = data;
queue->rear = (queue->rear + 1) % queue->size;
}
// 出队
void DeQueue(CircularQueue* queue) {
if (queue->front == queue->rear) {
printf("Queue is empty!");
return;
}
queue->front = (queue->front + 1) % queue->size;
}
// 取队头元素
int GetFront(CircularQueue* queue) {
if (queue->front == queue->rear) {
printf("Queue is empty!");
return -1;
}
return queue->base[queue->front];
}
// 求队长
int GetLength(CircularQueue* queue) {
return (queue->rear - queue->front + queue->size) % queue->size;
}
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)