08. 已知在维数组 A[m +n]中依次存放两个线性表(a), a2, a3,.. ,am)和(b, b2.3."",bn).编写个函数,将数组中两个顺序表的位置互换,即将(b, b2, b3,", b,)放在(a), C2- a3."..,am)的前面。
时间: 2024-03-10 16:46:39 浏览: 79
可以采用三步反转法来实现位置互换:
1. 将数组 A 中前 m 个元素反转;
2. 将数组 A 中后 n 个元素反转;
3. 将整个数组 A 反转。
这样就可以实现将顺序表 b 放在顺序表 a 的前面了。
以下是具体的代码实现:
```
void swapLinearList(int A[], int m, int n) {
// 1. 将数组 A 中前 m 个元素反转
for (int i = 0; i < m / 2; i++) {
int temp = A[i];
A[i] = A[m - 1 - i];
A[m - 1 - i] = temp;
}
// 2. 将数组 A 中后 n 个元素反转
for (int i = m; i < (m + n) / 2; i++) {
int temp = A[i];
A[i] = A[m + n - 1 - i];
A[m + n - 1 - i] = temp;
}
// 3. 将整个数组 A 反转
for (int i = 0; i < (m + n) / 2; i++) {
int temp = A[i];
A[i] = A[m + n - 1 - i];
A[m + n - 1 - i] = temp;
}
}
```
调用函数时,传入数组 A、顺序表 a 的长度 m 和顺序表 b 的长度 n 即可:
```
int A[] = {1, 2, 3, 4, 5, 6};
int m = 3, n = 3;
swapLinearList(A, m, n);
```
经过函数调用后,数组 A 中的元素顺序变为:{4, 5, 6, 1, 2, 3},即将顺序表 b 放在了顺序表 a 的前面。
阅读全文