用c建立循环队列,实现出队和入队
时间: 2023-05-22 08:02:14 浏览: 103
c语言实现队列,出队入队等操作
的操作,你能给出示例代码吗?
当然可以,以下是一个简单的循环队列的实现示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 10
typedef struct {
int data[MAX_QUEUE_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isQueueEmpty(Queue *q) {
return q->front == q->rear;
}
int isQueueFull(Queue *q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
int enqueue(Queue *q, int value) {
if (isQueueFull(q)) {
printf("Queue is full, cannot enqueue.\n");
return 0;
}
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
return 1;
}
int dequeue(Queue *q, int *value) {
if (isQueueEmpty(q)) {
printf("Queue is empty, cannot dequeue.\n");
return 0;
}
*value = q->data[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return 1;
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
int value;
dequeue(&q, &value);
printf("Dequeued value: %d\n", value);
dequeue(&q, &value);
printf("Dequeued value: %d\n", value);
dequeue(&q, &value);
printf("Dequeued value: %d\n", value);
dequeue(&q, &value);
return 0;
}
```
这个示例代码实现了一个循环队列,使用了一个数组来存储队列中的元素,同时使用 front 和 rear 两个指针来指示队列的头和尾。enqueue 函数用于将元素入队,dequeue 函数用于将元素出队。
阅读全文