考研数据结构(每日一题)
题目:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3…,am)和(b1,b2,b3…,bn)。试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3…bn)放在(a1,a2,a3…,am)的前面。
算法图解:
算法思想:
1.将前m个(a1,a2,a3…,am)逆置
2.将后n个(b1,b2,b3…,bn)逆置
3.将m+n个(整体)逆置
完整代码:
void Reverse(int [] L, int 0, int i){
Elemtype temp;
for(i = 0; i <= L.length / 2; i++){
temp = L.data[i];
L.data[i] = L.data[L.length - i - 1];
L.data[L.length - i - 1] = temp;
}
}
void exchange(int[] A,int m,int n){
Reverse(A, 0, m - 1);
Reverse(A, m, m + n- 1);
Reverse(A, 0, m + n - 1);
}