√使用c语言实现顺序循环队列的类型定义与算法函数: √编写main()函数并根据需要修改、补充相关的类型定义与函数,以实现以下要求: 初始化顺序循环队列(队列最大长度7),front和rear位置
时间: 2024-05-20 10:15:58 浏览: 98
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 7
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} SqQueue;
// 初始化队列
void InitQueue(SqQueue *Q) {
Q->front = Q->rear = 0;
}
// 判断队列是否为空
int QueueEmpty(SqQueue Q) {
if (Q.front == Q.rear) {
return 1;
} else {
return 0;
}
}
// 判断队列是否已满
int QueueFull(SqQueue Q) {
if ((Q.rear + 1) % MAXSIZE == Q.front) {
return 1;
} else {
return 0;
}
}
// 入队
int EnQueue(SqQueue *Q, int x) {
if (QueueFull(*Q)) {
return 0;
} else {
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
}
// 出队
int DeQueue(SqQueue *Q, int *x) {
if (QueueEmpty(*Q)) {
return 0;
} else {
*x = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
}
int main() {
SqQueue Q;
int i, x;
// 初始化队列
InitQueue(&Q);
// 入队操作
for (i = 1; i <= 7; i++) {
if (EnQueue(&Q, i)) {
printf("入队元素:%d\n", i);
} else {
printf("队列已满,无法入队\n");
}
}
// 出队操作
while (DeQueue(&Q, &x)) {
printf("出队元素:%d\n", x);
}
return 0;
}
阅读全文