编一个函数+void+rearrange(int+*p,+int+m,+int+n),能够将p所指数组中下标m到下标n的数组元素实现首尾颠倒。在主函数中有一个数组int+a[10]=+(1,+2,+3
时间: 2024-01-01 16:05:37 浏览: 38
```c
void rearrange(int *p, int m, int n){
int temp;
while(m < n){
temp = *(p + m);
*(p + m) = *(p + n);
*(p + n) =;
m++;
n--;
}
}
int main(){
int a[10] = {1, 2, 3,4, 5, 6,7, 8, 9, 10};
rearrange(a, 2, 5);
for(int i = 0; i < 10; i++){
printf("%d ", a[i]);
}
return 0;
}
```
输出结果为:1 2 6 5 4 3 7 8 9 10
相关问题
C 要求调用函数将数组a中的10个正整数重新排列,排列方式为将偶数放在数组左部,奇数放在右部
可以编写一个函数,接收一个整型数组和该数组的长度作为参数,然后按照要求对该数组进行重新排列。具体的实现可以按照以下步骤:
1. 定义两个指针,一个指向数组的头部,一个指向数组的尾部。
2. 从头部开始遍历数组,如果当前元素是偶数,则将其与头部指针指向的元素进行交换,并将头部指针向后移动一位。
3. 从尾部开始遍历数组,如果当前元素是奇数,则将其与尾部指针指向的元素进行交换,并将尾部指针向前移动一位。
4. 重复步骤2和步骤3,直到头部指针和尾部指针相遇为止。
下面是一个示例代码:
```c
void rearrange(int *a, int len) {
int *p = a, *q = a + len - 1;
while (p < q) {
if (*p % 2 == 0) {
p++;
} else if (*q % 2 == 1) {
q--;
} else {
int temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
}
}
```
你可以调用这个函数来实现对数组的重新排列。
设有一个整数顺序表,编写函数将其调整为奇数在前,偶数在后。用c++实现在单链表中
以下是单链表的实现代码:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* oddEvenList(ListNode* head) {
if (!head) return NULL;
ListNode *odd = head, *even = head->next, *evenHead = even;
while (even && even->next) {
odd->next = even->next;
odd = odd->next;
even->next = odd->next;
even = even->next;
}
odd->next = evenHead;
return head;
}
void printList(ListNode* head) {
ListNode* curr = head;
while (curr) {
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
}
int main() {
// create a linked list
ListNode *head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
head->next->next->next->next = new ListNode(5);
// print the original list
cout << "Original list: ";
printList(head);
// rearrange the list
head = oddEvenList(head);
// print the rearranged list
cout << "Rearranged list: ";
printList(head);
return 0;
}
```
首先,我们定义一个 `ListNode` 结构体,包含一个整数值和一个指向下一个节点的指针。
然后,我们定义一个 `oddEvenList` 函数,它接受一个单链表的头节点作为参数,并且将链表中的奇数节点放在前面,偶数节点放在后面。我们用两个指针 `odd` 和 `even` 分别指向链表的第一个和第二个节点,用 `evenHead` 记录下第二个节点,以便最后将链表连接起来。我们用 `while` 循环遍历链表,每次将 `odd` 指针指向下一个奇数节点,将 `even` 指针指向下一个偶数节点,然后将它们分别连接起来。最后,我们将最后一个奇数节点的 `next` 指向第二个节点,将整个链表连接起来。最后,我们返回头节点。
最后,我们定义一个 `printList` 函数,用于打印单链表的所有节点。在主函数中,我们创建一个单链表并将其传递给 `oddEvenList` 函数,然后打印出原始链表和重新排列后的链表。