循环队列的基本操作c++
时间: 2023-11-08 15:05:28 浏览: 143
循环队列是一种常见的数据结构,它可以在固定大小的数组中实现队列的基本操作。C++中实现循环队列的基本操作包括:
1.初始化队列:定义一个数组和两个指针front和rear,分别指向队头和队尾,初始时front和rear都指向0。
2.判断队列是否为空:当front和rear相等时,队列为空。
3.判断队列是否已满:当(rear+1)%数组大小等于front时,队列已满。
4.入队操作:将元素插入到rear指向的位置,然后将rear指针向后移动一位。
5.出队操作:将front指向的元素弹出队列,然后将front指针向后移动一位。
6.获取队头元素:返回front指向的元素。
7.获取队列长度:返回rear和front之间的元素个数。
下面是一个示例代码,实现了循环队列的基本操作:
```C++
#include<iostream>
using namespace std;
const int MAXSIZE = 5; //定义队列的最大长度
typedef struct {
int data[MAXSIZE];
int front, rear;
}SqQueue;
//初始化队列
void InitQueue(SqQueue &S) {
S.front = S.rear = 0;
}
//判断队列是否为空
bool IsEmpty(SqQueue S) {
if (S.front == S.rear) {
return true;
}
else {
return false;
}
}
//判断队列是否已满
bool IsFull(SqQueue S) {
if ((S.rear + 1) % MAXSIZE == S.front) {
return true;
}
else {
return false;
}
}
//入队操作
bool InQueue(SqQueue &S, int x) {
if (IsFull(S)) {
return false;
}
else {
S.data[S.rear] = x;
S.rear = (S.rear + 1) % MAXSIZE;
return true;
}
}
//出队操作
bool DeQueue(SqQueue &S, int &x) {
if (IsEmpty(S)) {
return false;
}
else {
x = S.data[S.front];
S.front = (S.front + 1) % MAXSIZE;
return true;
}
}
//获取队头元素
bool GetHead(SqQueue S, int &x) {
if (IsEmpty(S)) {
return false;
}
else {
x = S.data[S.front];
return true;
}
}
//获取队列长度
int GetLen(SqQueue S) {
return (S.rear - S.front + MAXSIZE) % MAXSIZE;
}
//主函数
int main() {
SqQueue S;
InitQueue(S);
int inpute;
for (int i = 0; i < 5; i++) {
cout << "请输入第" << i + 1 << "个数据:";
cin >> inpute;
InQueue(S, inpute);
}
GetLen(S);
int outpute;
for (int j = 0; j < 5; j++) {
DeQueue(S, outpute);
cout << "输出第" << j + 1 << "个元素:" << outpute << endl;
}
return 0;
}
```
阅读全文