2. 请用c语言编程实现队列的基本操作,主要包括队列的创建、入队和出队等基本操作。
时间: 2024-05-03 14:22:03 浏览: 92
好的,关于队列基本操作的 C 语言实现,下面是代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct Queue {
int front, rear;
int data[MAXSIZE];
} Queue;
// 初始化队列
void init(Queue *Q) {
Q->front = Q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue Q) {
if (Q.front == Q.rear) {
return 1;
} else {
return 0;
}
}
// 判断队列是否已满
int isFull(Queue Q) {
if ((Q.rear + 1) % MAXSIZE == Q.front) {
return 1;
} else {
return 0;
}
}
// 入队
int enQueue(Queue *Q, int value) {
if (isFull(*Q)) {
return 0;
} else {
Q->data[Q->rear] = value;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
}
// 出队
int deQueue(Queue *Q, int *value) {
if (isEmpty(*Q)) {
return 0;
} else {
*value = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
}
int main() {
Queue Q;
int i, value;
init(&Q);
// 入队
for (i = 1; i <= 5; i++) {
enQueue(&Q, i);
}
// 出队
while (!isEmpty(Q)) {
deQueue(&Q, &value);
printf("%d ", value);
}
return 0;
}
```
这里实现了队列的三个基本操作:初始化队列、入队和出队。其中,`Queue` 结构体中 `front` 和 `rear` 分别记录了队列的头和尾,`data` 数组用于存储队列中的元素。
在 `enQueue` 和 `deQueue` 函数中,使用了循环队列的方式实现,避免了队列满或空时出现越界的问题。在主函数中,先将 1 到 5 入队,然后出队并输出队列中的元素。
希望对你有所帮助!
阅读全文