设计算法void reverseOdd(SqQueue &sq) ,对参数所给定的队列sq中的整数进行操作,将其中奇数的顺序进行逆置,偶数的顺序维持不变。用栈 完整代码
时间: 2024-05-27 07:14:57 浏览: 10
Q)实现对队列中所有奇数位置元素的反转。
1. 将队列中所有奇数位置的元素出队,并保存在一个临时的数组中。
2. 将临时数组中的元素按照逆序依次入队。
3. 将队列中所有偶数位置的元素出队,并保存在另一个临时的数组中。
4. 将偶数位置的临时数组中的元素按照顺序依次入队。
5. 最后队列中的元素即为反转后的结果。
算法实现如下:
void reverseOdd(SqQueue Q)
{
int len = Q.rear - Q.front; // 队列长度
int odd[len/2]; // 保存奇数位置元素的临时数组
int even[len/2]; // 保存偶数位置元素的临时数组
int odd_idx = 0, even_idx = 0;
// 将队列中所有奇数位置的元素出队,并保存在临时数组中
for (int i = 1; i <= len; i += 2) {
DeQueue(Q, odd[odd_idx]);
odd_idx++;
}
// 将奇数位置的临时数组中的元素按照逆序依次入队
for (int i = odd_idx - 1; i >= 0; i--) {
EnQueue(Q, odd[i]);
}
// 将队列中所有偶数位置的元素出队,并保存在临时数组中
for (int i = 2; i <= len; i += 2) {
DeQueue(Q, even[even_idx]);
even_idx++;
}
// 将偶数位置的临时数组中的元素按照顺序依次入队
for (int i = 0; i < even_idx; i++) {
EnQueue(Q, even[i]);
}
}
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)