循环队列初始化、入队、出队、取对头元素和求队长算法代码
时间: 2023-06-02 20:05:55 浏览: 106
以下是循环队列的算法代码:
// 定义循环队列结构体
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;
}
阅读全文