typedef struct { int data[Maxsize]; int front, rear; }cqueue;//定义循环队列。用c语言写一个循环队列入队的操作
时间: 2024-11-22 07:40:52 浏览: 2
利用顺序栈逆置循环队列.docx
在 C 语言中,基于你给出的结构体 `cqueue`,我们可以创建一个入队函数 `enqueue()` 来向循环队列中添加元素。这里是示例代码:
```c
#include <stdio.h>
// 定义循环队列
typedef struct {
int data[MAX_SIZE];
int front; // 队头指针
int rear; // 队尾指针
} cqueue;
// 初始化循环队列
void init(cqueue* cq) {
cq->front = -1;
cq->rear = -1;
}
// 入队操作
void enqueue(cqueue* cq, int value) {
// 检查队列是否已满
if (cq->rear == (cq->front + MAX_SIZE - 1) % MAX_SIZE) {
printf("Queue is full.\n");
return;
}
// 如果队列为空,设置队头和队尾
if (cq->front == -1) {
cq->front = 0;
} else {
cq->rear = (cq->rear + 1) % MAX_SIZE; // 循环队列的概念
}
// 将值添加到队列末尾
cq->data[cq->rear] = value;
printf("Enqueued %d into the circular queue.\n", value);
}
// 示例主程序
int main() {
cqueue my_queue;
init(&my_queue);
enqueue(&my_queue, 1);
enqueue(&my_queue, 2);
enqueue(&my_queue, 3);
return 0;
}
```
这个 `enqueue` 函数首先检查队列是否已满,如果不满则更新队尾指针并插入新元素。注意循环队列的特点在这里,当队尾达到 `MAX_SIZE - 1` 时,通过取模 `% MAX_SIZE` 使其回到队列的开始。
阅读全文