SortedLinkedList删除两个节点

时间:2015-11-26 08:54:01

标签: java sortedlist

我需要删除SortedLinkedList中的一个键,但我不能。没有语法错误但代码不起作用。删除节点列表的乞讨,结束和中间的方法。这是我的删除方法:

    public void Remove(int key){

      LinkedListNode find = Find(key);
      if(find == null){
          System.out.println("Item is not found.");
      return;}

      LinkedListNode helper = new LinkedListNode();
        helper.next = head;
        LinkedListNode p = helper;

        while(p.next != null){
            if(p.next.key == key){
                LinkedListNode next = p.next;
                p.next = next.next; 
            }else{
                p = p.next;
            }
            return;
        } 
        noOfNodes--; 
    }

    public void Remove(LinkedListNode node)  {
        Remove(node.key);
    }

另一个代码:

     public void Remove(int key){
      LinkedListNode temp = Find(key);
      if(temp==null)
      {
          System.out.println("Item not found");
          return;
      }
      if(head==tail){
          head=null;
          tail=null;
      }

     else if(temp.key==head.key){
             head=temp.next;
                 head.prev=null;
         //
     }else if(temp.key==tail.key){
         tail=tail.prev;
         tail.next=null;
     }else { 
         temp.prev.next=temp.next;
         temp.next.prev=temp.prev;
     }
         noOfNodes--;
  } 

     public void Remove(LinkedListNode node){
     Remove(node.key);
  } 

提前致谢!

1 个答案:

答案 0 :(得分:0)

问题出在这里:

while(p.next != null){
            if(p.next.key == key){
                LinkedListNode next = p.next;
                p.next = next.next; 
            }else{
                p = p.next;
            }
            return;  //--> why are you returning here ... Line 1
        } 

从第1行返回,意味着您刚刚检查了第一个值,将其等于key或不等于key,您只是打破while循环并返回调用方法或父方法。这绝对不会消除价值。