编写程序实现循环队列的初始化、判断队列空否、入队列和出队列等。用c实现并展示运行结果
时间: 2023-05-31 17:05:38 浏览: 78
数据结构与算法C++实现 循环顺序队列的初始化,求长度,入队,出队
5星 · 资源好评率100%
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5 // 循环队列最大长度
typedef int DataType; // 定义数据类型
typedef struct {
DataType data[MAXSIZE]; // 存放数据的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void InitQueue(Queue *Q) {
Q->front = Q->rear = 0;
}
// 判断队列是否为空
int IsEmpty(Queue *Q) {
return Q->front == Q->rear;
}
// 判断队列是否已满
int IsFull(Queue *Q) {
return (Q->rear + 1) % MAXSIZE == Q->front;
}
// 入队列
void EnQueue(Queue *Q, DataType x) {
if (IsFull(Q)) {
printf("队列已满,无法入队!\n");
return;
}
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
}
// 出队列
void DeQueue(Queue *Q) {
if (IsEmpty(Q)) {
printf("队列为空,无法出队!\n");
return;
}
printf("%d出队列!\n", Q->data[Q->front]);
Q->front = (Q->front + 1) % MAXSIZE;
}
// 输出队列
void PrintQueue(Queue *Q) {
int i = Q->front;
while (i != Q->rear) {
printf("%d ", Q->data[i]);
i = (i + 1) % MAXSIZE;
}
printf("\n");
}
int main() {
Queue Q;
InitQueue(&Q);
printf("队列是否为空:%d\n", IsEmpty(&Q));
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
PrintQueue(&Q);
DeQueue(&Q);
PrintQueue(&Q);
EnQueue(&Q, 4);
EnQueue(&Q, 5);
PrintQueue(&Q);
EnQueue(&Q, 6);
printf("队列是否已满:%d\n", IsFull(&Q));
return 0;
}
// 运行结果:
// 队列是否为空:1
// 1 2 3
// 1出队列!
// 2 3
// 2 3 4 5
// 队列已满,无法入队!
// 队列是否已满:1
阅读全文