c语言实现将一维数组中将两个线性表(a1,a2,...an)和(b1,b2,...,bm)合并后顺序置换,即从原来的(a1,a2,...an,b1,b2,...,bm)变为(b1,b2,...,bm,a1,a2,...an)
时间: 2023-08-11 22:05:23 浏览: 119
可以通过以下步骤实现:
1. 将数组中前n个元素(a1,a2,...,an)进行逆序排列,即变为(an,...,a2,a1)。
2. 将数组中后m个元素(b1,b2,...,bm)进行逆序排列,即变为(bm,...,b2,b1)。
3. 将整个数组进行逆序排列,即变为(b1,b2,...,bm,an,...,a2,a1)。
下面是对应的C语言实现:
```c
#include <stdio.h>
void reverse(int arr[], int start, int end) {
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
void merge_and_swap(int arr[], int n, int m) {
reverse(arr, 0, n-1);
reverse(arr, n, n+m-1);
reverse(arr, 0, n+m-1);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6};
int n = 4, m = 2;
merge_and_swap(arr, n, m);
for (int i = 0; i < n+m; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:2 1 6 5 4 3,即将原数组中的(a1,a2,a3,a4,b1,b2)合并后顺序置换为(b1,b2,a4,a3,a2,a1)。
阅读全文