数据结构C语言版定义循环队列结构体
时间: 2024-10-17 13:15:45 浏览: 51
在C语言中,我们可以使用数组和指针来实现一个循环队列的数据结构。这里是一个简单的循环队列的定义示例:
```c
typedef struct {
int* queue; // 队列元素动态存储的指针
int front; // 队头索引
int rear; // 队尾索引
int capacity; // 队列容量
} CircularQueue;
// 初始化循环队列
void initCircularQueue(CircularQueue* cq, int size) {
cq->queue = (int*)malloc(size * sizeof(int));
cq->front = -1;
cq->rear = -1;
cq->capacity = size;
}
// 入队操作
void enqueue(CircularQueue* cq, int value) {
if ((cq->rear + 1) % cq->capacity == cq->front) { // 判断队满
printf("Queue is full.\n");
return;
}
cq->rear = (cq->rear + 1) % cq->capacity; // 循环更新队尾
cq->queue[cq->rear] = value;
}
// 出队操作
int dequeue(CircularQueue* cq) {
if (cq->front == -1) { // 判断队空
printf("Queue is empty.\n");
return -1;
}
int item = cq->queue[cq->front]; // 获取队首元素
cq->front = (cq->front + 1) % cq->capacity; // 更新队头
return item;
}
// 结束使用时释放内存
void destroyCircularQueue(CircularQueue* cq) {
free(cq->queue);
cq->front = cq->rear = -1;
}
```
在这个循环队列中,`queue`是一个指向整数的指针,`front`和`rear`分别表示队头和队尾的索引。当出队或入队操作使得队尾追上队头时,我们进入了一个“循环”的状态。
阅读全文