线性表删除

作者: 泰克2008 | 来源:发表于2017-07-27 18:12 被阅读3次

    效率较高:

    void listRemoveValue(LinearList * list,LinearListNodeValue value){
       if (list == NULL) return;
       //定义一个初始值记录需要删除的个数
       int removeCount = 0;
       //遍历所有元素
       for (int i = 0 ; i < list->length; i++) {
           if (list->values[i]==value) {//是需要删除的
               //让删除的个数加1
               removeCount++;
           }else{//不删除就挪动
               list->values[i - removeCount] = list->values[i];
           }
       }
       //最后将长度减去删除的个数
       list->length -= removeCount;
    }
    

    效率较低:

    void listRemoveValue(LinearList * list,LinearListNodeValue value){
        if (list == NULL) return;
        //遍历所有元素
        for (int i = 0 ; i < list->length; i++) {
            while (list->values[i] == value && i< list->length) {//是需要删除的!!
                //干掉当前的数据
                listRemove(list, i);
                list->length--;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:线性表删除

        本文链接:https://www.haomeiwen.com/subject/hfctlxtx.html