循环队S[M],采用尾指针后置法,即first指向真实的队头,last指向真实的队尾的后一位置,同时禁用一个单元,则队空的条件为 输入答案 ,队满的条件是 输入答案 ,队中元素个数为 输入答案
时间: 2023-07-16 17:12:29 浏览: 42
循环队S[M]采用尾指针后置法,队列的定义如下:
```C++
#define MAXSIZE M+1
typedef struct{
int data[MAXSIZE];
int first, last; // 队头指针和队尾指针
}SqQueue;
```
其中,`MAXSIZE` 表示队列的最大长度,`first` 表示队头指针,`last` 表示队尾指针。
队列的初始化可以使用以下代码实现:
```C++
void InitQueue(SqQueue& Q) {
Q.first = Q.last = 0;
}
```
队列的入队操作可以使用以下代码实现:
```C++
bool EnQueue(SqQueue& Q, int x) {
// 队满判断
if ((Q.last + 1) % MAXSIZE == Q.first) {
cout << "队列已满" << endl;
return false;
}
Q.data[Q.last] = x; // 将元素 x 插入队尾
Q.last = (Q.last + 1) % MAXSIZE; // 队尾指针后移一位
return true;
}
```
队列的出队操作可以使用以下代码实现:
```C++
bool DeQueue(SqQueue& Q, int& x) {
// 队空判断
if (Q.first == Q.last) {
cout << "队列为空" << endl;
return false;
}
x = Q.data[Q.first]; // 取出队头元素
Q.first = (Q.first + 1) % MAXSIZE; // 队头指针后移一位
return true;
}
```
队列的长度可以使用以下代码实现:
```C++
int QueueLength(SqQueue Q) {
return (Q.last - Q.first + MAXSIZE) % MAXSIZE;
}
```
其中,`(Q.last - Q.first + MAXSIZE) % MAXSIZE` 表示队列中元素的个数。
需要注意的是,在队列中,为了区分队空和队满的情况,需要浪费一个存储空间。因此,队列的最大长度为 `MAXSIZE-1`。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)