题目:
已知在⼀维数组A[m+n]中依次存放两个线性表(a1,a2,a3,.am)和(b1,b2,
b3.bn)。编写⼀个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3.bn)放在
(a1,a2,a3,.an)的前⾯
思路:
1.:现将A中所有元素逆置,变成:bn,bn-1......b1,am,am-1.......a1。
2:将前n个逆置。
3:将后m个逆置。
void Reverse(int arr[],int i,int j)
{
//通过first指针来指向第一个元素,而end指向最后一个
int* first = &arr[i];
int* end = &arr[j];
while(first<end)
{
//将第一个和最后一个元素交换
int temp = *first;
*first = *end;
first++;
*end = temp;
end--;
}
}
/*
1:现将A中所有元素逆置,变成:bn,bn-1......b1,am,am-1.......a1。
2:将前n个逆置。
3:将后m个逆置。
*/
void Reverse1(int arr[],int m,int n,int len)
{
Reverse(arr,0,len-1);
Reverse(arr,0,n-1);
Reverse(arr,n,len-1);
}