循环队列顺序存储的基本操作c语言
时间: 2023-10-23 16:47:47 浏览: 101
循环队列的基本操作的c算法实现
循环队列顺序存储的基本操作包括:初始化队列、入队、出队、判断队列是否为空或已满、获取队首元素、获取队列长度等。以下是一个基本的循环队列顺序存储的 C 语言实现示例:
#define MAXSIZE 100 // 循环队列最大容量
typedef struct {
int data[MAXSIZE];
int front; // 队头指针
int rear; // 队尾指针
} CircularQueue;
// 初始化循环队列
void initQueue(CircularQueue *queue) {
queue->front = 0;
queue->rear = 0;
}
// 入队操作
int enqueue(CircularQueue *queue, int value) {
if ((queue->rear + 1) % MAXSIZE == queue->front) { // 队列满
return 0;
}
queue->data[queue->rear] = value;
queue->rear = (queue->rear + 1) % MAXSIZE;
return 1;
}
// 出队操作
int dequeue(CircularQueue *queue) {
if (queue->front == queue->rear) { // 队列空
return -1;
}
int value = queue->data[queue->front];
queue->front = (queue->front + 1) % MAXSIZE;
return value;
}
// 判断队列是否为空
int isEmpty(CircularQueue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int isFull(CircularQueue *queue) {
return (queue->rear + 1) % MAXSIZE == queue->front;
}
// 获取队首元素
int getFront(CircularQueue *queue) {
if (isEmpty(queue)) {
return -1;
}
return queue->data[queue->front];
}
// 获取队列长度
int getLength(CircularQueue *queue) {
return (queue->rear - queue->front + MAXSIZE) % MAXSIZE;
}
阅读全文