采用损失一个空间的顺序存储实现队列的初始化、入队、出队操作 完整C语言代码
时间: 2024-05-10 08:20:21 浏览: 105
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
// 定义队列结构体
typedef struct {
int data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} SeqQueue;
// 初始化队列
void InitQueue(SeqQueue *Q) {
Q->front = Q->rear = 0; // 初始化队头和队尾指针
}
// 判断队列是否为空
int IsEmpty(SeqQueue Q) {
if (Q.front == Q.rear) {
return 1;
}
return 0;
}
// 判断队列是否已满
int IsFull(SeqQueue Q) {
if ((Q.rear + 1) % MAXSIZE == Q.front) {
return 1;
}
return 0;
}
// 入队操作
int EnQueue(SeqQueue *Q, int x) {
if (IsFull(*Q)) {
return 0; // 队列已满,入队失败
}
Q->data[Q->rear] = x; // 将元素x存入队尾指向的位置
Q->rear = (Q->rear + 1) % MAXSIZE; // 队尾指针后移一位
return 1; // 入队成功
}
// 出队操作
int DeQueue(SeqQueue *Q, int *x) {
if (IsEmpty(*Q)) {
return 0; // 队列为空,出队失败
}
*x = Q->data[Q->front]; // 将队头元素赋值给x
Q->front = (Q->front + 1) % MAXSIZE; // 队头指针后移一位
return 1; // 出队成功
}
int main() {
SeqQueue Q;
int x;
InitQueue(&Q);
// 入队操作
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
// 出队操作
DeQueue(&Q, &x);
printf("出队元素为:%d\n", x);
DeQueue(&Q, &x);
printf("出队元素为:%d\n", x);
DeQueue(&Q, &x);
printf("出队元素为:%d\n", x);
return 0;
}
```
阅读全文