题目描述:已知在一维数组A[m+n]中依次存放两个线性表(a1,…,am)和(b1,.,bn)。编写一个函数,将数组中两个顺序表的位置互换,即将(b1,.,bn)放在(a1,…,am)的前面。
// 反转数组中指定区间的元素
void Reverse(ElemType A[], int left, int right) {
// 计算中间位置
int mid = (left + right) / 2;
ElemType temp;
// 遍历区间左半部分进行元素交换,使数组反转
for (int i = 0; i < mid - left; i++) {
// 交换左右两侧的元素
temp = A[left + i];
A[left + i] = A[right - i];
A[right - i] = temp;
}
}
// 将数组中两个顺序表的位置互换
void Convert(ElemType A[], int n, int m) {
// 反转整个数组
Reverse(A, 0, m + n - 1);
// 反转前 n 个元素
Reverse(A, 0, n - 1);
// 反转剩余部分(即从第 n 个元素到最后一个元素)
Reverse(A, n, m + n - 1);
}