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


    删除顺序表中的某个元素

    实现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];  ,避免逻辑上的错误


  • 相关阅读:
    网站后台编辑器怎样才能兼容IE6、IE8
    map area
    纯CSS圆角
    【转】Linux 查看某一进程的占用CPU的Cacti 脚本
    查看/修改Linux时区和时间,更新系统时间
    Centos下安装X Window+GNOME Desktop+FreeNX
    rhel6 kvm做桥接
    Gentoo网络配置
    常用正则表达式
    VS 设置备忘
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8098344.html
Copyright © 2020-2023  润新知