对参数所给定的队列sq中的整数进行操作,将其中奇数的顺序进行逆置,偶数的顺序维持不变C语言
时间: 2024-05-29 19:10:06 浏览: 18
void ReverseOddNumbers(queue<int>& sq) {
stack<int> s;
queue<int> q;
int size = sq.size();
for (int i = 0; i < size; i++) {
int num = sq.front();
sq.pop();
if (num % 2 == 0) {
q.push(num);
}
else {
s.push(num);
}
}
while (!s.empty()) {
sq.push(s.top());
s.pop();
}
while (!q.empty()) {
sq.push(q.front());
q.pop();
}
}
相关问题
对参数所给定的队列sq中的整数进行操作,将其中奇数的顺序进行逆置,偶数的顺序维持不变C语言不用栈
void reverse_odd(Queue *sq) {
QueueNode *p, *odd_head = NULL, *odd_tail = NULL;
int odd_count = 0;
// 将队列中的奇数节点分离出来
p = sq->front;
while (p != NULL) {
if (p->data % 2 == 1) {
if (odd_head == NULL) {
odd_head = p;
odd_tail = p;
} else {
odd_tail->next = p;
odd_tail = p;
}
odd_count++;
}
p = p->next;
}
// 对奇数节点进行逆置
if (odd_count > 1) {
p = odd_head->next;
odd_head->next = NULL;
while (p != NULL) {
QueueNode *q = p->next;
p->next = odd_head;
odd_head = p;
p = q;
}
}
// 将逆置后的奇数节点插入队列中
if (odd_head != NULL) {
odd_tail->next = sq->front;
sq->front = odd_head;
if (sq->rear == NULL) {
sq->rear = odd_tail;
}
}
}
设计算法void reverseOdd(SqQueue &sq) ,对参数所给定的队列sq中的整数进行操作,将其中奇数的顺序进行逆置,偶数的顺序维持不变。
Q),
将队列Q中所有奇数位置的元素反转,偶数位置的元素位置不变。
算法思路:
1. 定义两个栈,分别为奇数位置元素的栈和偶数位置元素的栈。
2. 遍历队列Q,将奇数位置的元素入奇数栈,将偶数位置的元素入偶数栈。
3. 依次将奇数栈和偶数栈的元素出栈,将奇数栈的元素放回队列Q中的奇数位置,将偶数栈的元素放回队列Q中的偶数位置。
时间复杂度:O(n),其中n为队列Q中元素个数。
空间复杂度:O(n),需要额外的两个栈空间。
算法实现:
void reverseOdd(SqQueue Q){
// 定义奇数栈和偶数栈
SqStack oddStack, evenStack;
initStack(&oddStack);
initStack(&evenStack);
// 遍历队列Q,将奇数位置元素入奇数栈,将偶数位置元素入偶数栈
for(int i = 1; i <= Q.length; i++){
if(i % 2 != 0){
push(&oddStack, Q.data[i-1]);
}else{
push(&evenStack, Q.data[i-1]);
}
}
// 依次将奇数栈和偶数栈的元素出栈,将奇数栈的元素放回队列Q中的奇数位置,将偶数栈的元素放回队列Q中的偶数位置
int j = 1;
while(!isEmpty(&oddStack)){
Q.data[j-1] = pop(&oddStack);
j += 2;
}
j = 2;
while(!isEmpty(&evenStack)){
Q.data[j-1] = pop(&evenStack);
j += 2;
}
}
相关推荐
![](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)