从链接列表的中间删除重复的元素

时间:2019-05-24 01:58:20

标签: java linked-list

所以,我有一个使用链表删除重复元素的方法,该方法确实可以从前端(返回过程)和末端(返回过程)中除去重复元素,但不能从中间(重复失败,如果工作应返回通行证) 输出示例如下:

一些重复项(一端):( D,E,C,D,C,C,B,A)-A->(D,E,C,D,C,C,B)         所有“ A”删除:通过         没有其他人删除:通过

一些重复项(中间):( D,E,C,D,C,C,B,A)-C->(D,E,D,C,B,A)         所有“ C”删除:FAIL *         没有其他人删除:失败*

某些重复项(另一端):( D,E,C,D,C,C,B,A)-D->(E,C,C,C,B,A)         所有“ D”删除:通过         没有其他人删除:通过

这是我使用的方法:

    public void expunge(T anElement){
        Node prev = null;
        Node currNode = firstNode;
       // boolean findDublicate = false;

        while(currNode != null){
        if(currNode.data.equals(anElement)){
            //Found something to remove
            numberOfEntries--;


            if(prev == null){

                firstNode = currNode.next;
            } else {
                prev.next = currNode.next;
            }
             if(prev == anElement){
                currNode.next = prev.next;}

        }

        //Maintain loop invariant: prev is the node before curr.
        if(currNode.next != firstNode){
            prev = currNode;
        }

        currNode = currNode.next;
    }    
  }

0 个答案:

没有答案