顺序表 | 删除顺序表中的某个元素

删除顺序表中的某个元素

实现1:(查找到与value相同的元素,将指针不断右移知道与value不同)

C++代码:

void del_elem(int *sqList,int value,int & length){
    int i,d=0;
    for(i=0;i<length-d;i++){
        while(sqList[i+d]==value){
            d++;
        }
        sqList[i]=sqList[i+d];
    }
    length-=d;
}

注意点:顺序表 | 删除顺序表中的某个元素记得使用while语句做判断,不然不能删除连续的value

实现效果:

顺序表 | 删除顺序表中的某个元素

仿王道伪代码:

1 void del_x_l(sqList & L,ElemType x){
 2     int i,d=0;
 3     for(i=0;i<sqList.length-d;i++){
 4         while(sqList.data[i+d]==x){
 5             d++;
 6         }
 7         sqList.data[i]=sqList.data[i+d];
 8     }
 9     sqList.length-=d;
10 }

王道P20 T3

实现2:(用辅助下标k记录与value不同的元素)

C++代码:

1 void del_elem(int *sqList,int value,int & length){
2     int i,k=0;
3     for(i=0;i<length;i++){
4         if(sqList[i]!=value){
5             sqList[k++]=sqList[i];
6         }
7     }
8     length=k;
9 }

实现3:(用k记录与value相同的元素数量)

C++代码:

void del_elem(int *sqList,int value,int & length){
    int i,k=0;
    for(i=0;i<length;i++){
        if(sqList[i]==value){
            k++;
        }else{
            sqList[i-k]=sqList[i];
        }
    }
    length-=k;
}

注意点:顺序表 | 删除顺序表中的某个元素不能写成 sqList[i]=sqList[i-k]; ,避免逻辑上的错误


顺序表 | 删除顺序表中的某个元素
原文链接: https://www.cnblogs.com/TQCAI/p/8098344.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/266411

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午5:43
下一篇 2023年2月14日 下午5:44

相关推荐