zoukankan      html  css  js  c++  java
  • 顺序表 | 删除顺序表中的某个元素

    删除顺序表中的某个元素

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


  • 相关阅读:
    JAVA程序的运行机制
    DOS命令
    垃圾回收
    eureka的简单使用
    各微服务之间的调用
    各层调用关系与注解使用
    bean管理xml方式
    Lombok介绍和使用
    java特性 JDK JRE JVM
    git克隆 文件夹
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8098344.html
Copyright © 2011-2022 走看看