用c语言完整的写出队列代码
时间: 2024-05-13 11:14:21 浏览: 13
以下是用C语言实现队列的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
struct Queue {
int data[MAX_SIZE];
int front, rear;
};
void init_queue(struct Queue *q) {
q->front = -1;
q->rear = -1;
}
int is_empty(struct Queue q) {
return q.front == -1 && q.rear == -1;
}
int is_full(struct Queue q) {
return q.rear == MAX_SIZE - 1;
}
void enqueue(struct Queue *q, int x) {
if (is_full(*q)) {
printf("Queue is full!\n");
return;
}
if (is_empty(*q)) {
q->front = 0;
q->rear = 0;
} else {
q->rear++;
}
q->data[q->rear] = x;
}
int dequeue(struct Queue *q) {
if (is_empty(*q)) {
printf("Queue is empty!\n");
return -1;
}
int x = q->data[q->front];
if (q->front == q->rear) {
q->front = -1;
q->rear = -1;
} else {
q->front++;
}
return x;
}
void print_queue(struct Queue q) {
if (is_empty(q)) {
printf("Queue is empty!\n");
return;
}
printf("Queue: ");
for (int i = q.front; i <= q.rear; i++) {
printf("%d ", q.data[i]);
}
printf("\n");
}
int main() {
struct Queue q;
init_queue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
print_queue(q);
int x = dequeue(&q);
printf("Dequeued %d\n", x);
print_queue(q);
enqueue(&q, 4);
print_queue(q);
return 0;
}
```
代码中定义了一个结构体`Queue`,包含了队列的数据`data`以及队头`front`和队尾`rear`。`init_queue`函数用于初始化队列,`is_empty`和`is_full`函数用于判断队列是否为空和是否已满,`enqueue`函数用于入队,`dequeue`函数用于出队,`print_queue`函数用于打印队列。在`main`函数中,我们创建了一个队列`q`,进行了入队、出队和打印队列等操作。