顺序表一些题目

逆置元素

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;
}

 


版权声明:本文为qq_35827280原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。