数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换

前端之家收集整理的这篇文章主要介绍了数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

将数组中的两个顺序表位置互换,即将(b1,b2···bn)放到(a1,a2···am)前边。

解法一:

将数组中的全部元素(a1,a2,···am,b1,b2,···bn)原地逆置为(bn,bn-1,···b1,am,am-1···a1),再对前n个元素和后m个元素分别逆置,得到(b1,b2···bn,a1,a2···am),从而实现位置互换。

代码

  1. void Reverse(int a[],int left,1)">int right,1)">int arraySize)
  2. {//逆转(aleft,aleft+1,aleft+2···,aright)为(aright,aright-1,···,aleft)
  3. if(left>=right||right>=arrySize)
  4. return;
  5. int mid=(left+right)/2for(int i=0;i<=mid-left;i++)
  6. {
  7. int temp=A[left+i];
  8. A[left+i]=A[right-i];
  9. A[right-i]=temp;
  10. }
  11. }
  12. void Exchange(int A[],1)">int m,1)">int n,1)"> arraySize)
  13. {
  14. Reverse(A,0,m+n-1,arrySize);
  15. Reverse(A,n-

 

 

解法二:

借助辅助数组实现。

创建大小m的数组S,将A中前m个整数依次暂存在S中,同时将A中后n个元素左移,再将S中暂存的依次放回A中的后续单元。

  1. n)
  2. {
  3.    S[m],i;
  4.   for(i=0;i<m;i++)将前m个暂存至S
  5.    S[i]=A[i];
  6.   0;i<n;i++)将后n个移到前面
  7.     A[i]=A[m+i];
  8.   S中暂存的依次插入后面
  9.     A[n+i]=S[i];
  10. }

 

猜你在找的数据结构相关文章