在已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,…am)和(b1,b2,…bn)。 试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,…bn)放到(a1,a2,…am)的前面;
void Reverse(L,a,b)//对L数组下标a-b对应的元素逆置
{
for(a;a<=(b+a)/2;a++)
{
int temp=L.data[a];
L.data[a]=L.data[b];
L.data[b--]=temp;
}
}
void Exchange(A,n,m)
{ //n=4,m=5原1-2-3-4-5-6-7-8-9
Reverse(A,0,m-1); //第一次逆置4-3-2-1-5-6-7-8-9
Reverse(A,m,m+n-1);//第二次逆置4-3-2-1-9-8-7-6-5
Reverse(A,0,m+n-1);//第三次逆置5-6-7-8-9-1-2-3-4
}