首页 > 其他 > 详细

2.2.3-8

时间:2019-05-30 16:17:48      阅读:108      评论:0      收藏:0      [点我收藏+]

已知一个一维数组A[m+n]中依次存放的两个线性表(a1,a2,a3,...,am)和(b1,b2,b3,...,bn)。试编写一个函数,将数组中的两个顺序表的位置互换,即将b1,b2,b3,...,bn)放在(a1,a2,a3,...,am)前面

思想:首先将表中元素全部逆序,变为(bn,..,b2,b1,am,...,a2,a1),再将前n个元素逆序(b1,b2,..,bn,am,...,a2,a1),再将后m个元素逆序(b1,b2,..,bn,a1,a2,...,am)

//逆转数组中元素
void Reverse(int a[],int left,int right,int arraysize){
    if(left>=right || right>=arraysize)return;
    int mid = (left+right)/2;
    for(int i=0;i<mid-left;i++){
        int temp = a[left+i];
        a[left+i] = a[right-i];
        a[right-i] = temp;
    }
}
//将表中元素逆序
void Exchange(int a[],int m,int n,int arraysize){
    Reverse(a,0,m+n-1,arraysize);
    Reverse(a,0,n-1,arraysize);
    Reverse(a,n,m+n-1,arraysize);
}

 

2.2.3-8

原文:https://www.cnblogs.com/qing-mo/p/10950043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!