我想写一个链表并使用它(通过组合)来构建堆栈和队列类



SO 如果我想编写方法 Removelast(),这会起作用吗? 这是针对链接列表DS 我可以有一个没有其他的 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;      
}

使用 if 而不带 else 是正确的。请注意,那里有不同的编程风格。你可能想看看这本经典的书:代码完成:软件构建的实用手册,第二版。我自己使用 if 只是为了对我没有很多顶级独立 ifs 的程序流进行分区(而是使用"else if")。

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

此外,如果您有一个链表,其中每个节点都存储指向前一个节点的链接,则可以通过执行以下操作来删除尾部:

`Node<E> toRemove = tail;
tail = toRemove.previous;
if(tail == null) 
   head = null;
toRemove.previous = null;`

相关内容

  • 没有找到相关文章

最新更新