0

所以,如果我想编写 Removelast() 方法,这行得通吗?这是给linkedListDS的我可以有一个没有其他的if吗?

public E removeLast() {
    E result;          
    if(this.isEmpty())          
    {              
        System.out.println("No data present");              
         return null;          //over here
     }          

     result = tail.data;          
      if(this.size() == 1)          
        {               
           head= null;               
            tail= null;          
        }          
       else          
        {               
            Node<E> current;               
            current = head;                               
            while(current.next != tail)                   
                current= current.next;                                               

          tail = current;               
          tail.next=null;          
        }  

         return result;      
}
4

1 回答 1

0

使用 if 而不使用 else 是正确的。请注意,那里有不同的编程风格。您可能想查看这本经典书籍:Code Complete: A Practical Handbook of Software Construction, Second Edition。我自己只使用 if 来划分我没有很多顶级独立 if 的程序流(而不是使用 'else if')。

你的代码也有问题。如果您的列表为空 (size() == 0) 您尝试遍历节点,这应该会给您一个空指针异常。

此外,如果您有一个链表,其中每个节点都存储到前一个节点的链接,您可以通过以下方式删除尾部:

`Node<E> toRemove = tail;
tail = toRemove.previous;
if(tail == null) 
   head = null;
toRemove.previous = null;`
于 2013-09-30T05:49:15.097 回答