顺序表一些题目

逆置元素

void reverse(Sqlist &L)
{
    int i,j;
    int temp;
    for(i=0;j=L.length-1;i<j;++i;--j)
    {
        temp=L.data[i];
        L.data[i]=L.data[j];
        L.data[j]=temp;

     }
}

删除算法的扩展(删除下标i-j的元素)  

void delete(Sqlist &L,int i,int j)
{
    int k,delta;
    deleta =j-i+1;
    for(k=j+1;k<L.length;++k)
    {
        L.data[k-deleta]=L.data[k];
    }
    L.length-=delta;
}

 

将顺序表中所有小于表头的元素的整数放在前半部分,大于表头元素的整数放在后半部分

void move(Sqlist &L)
{
    int temp;
    int i=0,j=L.length-1;
    temp=L.data[i];
    while(i<j)
    {
        while(i<j&&L.data[j]>temp)  --j;
    //j从右往左扫描,当碰到第一个比temp小的元素时停止,并且每一步都要判断i是否小于j
        if(i<j)
        {
            L.data[i]=L.data[j];
            ++i;//L.data[i]被替换后记得,i要后移一位
        }


        while(i<j&&L.data[i]<temp)  ++i;
   //i从左往右扫描,当碰到第一个比temp大的元素时停止,并且每一步都要判断i是否小于j
        if(i<j)
        {
            L.data[j]=L.data[i];
            --j;
        }
    }
    L.data[i]=temp;
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值