Java 从尾部删除链表

Java 从尾部删除链表,java,data-structures,linked-list,Java,Data Structures,Linked List,我正在尝试从单链接列表的末尾删除。我没有保留对列表上最后一项引用的尾部变量。因此,这是我的实现。如果我设置current=null,我的问题是while循环之后的它不工作(它不会删除最后一个节点)。我必须将设置为当前。下一步=null 但是对于current.next=null,我必须添加什么next。即使我说current=null;这不意味着节点当前为空。有人能解释一下为什么我必须使用下一个吗 public void removeFromTail() throws EmptyStackExc

我正在尝试从单链接列表的末尾删除。我没有保留对列表上最后一项引用的尾部变量。因此,这是我的实现。如果我设置
current=null,我的问题是while循环之后的它不工作(它不会删除最后一个节点)。我必须将
设置为当前。下一步=null
但是对于
current.next=null,我必须添加什么next。即使我说current=null;这不意味着节点当前为空。有人能解释一下为什么我必须使用下一个吗

public void removeFromTail() throws EmptyStackException{
        if(head==null){
            throw new EmptyStackException("can't delete .Empty list");}
        else if(head.next==null){
            head=null;
        }
        else{
            ListNode current=head;
            while(current.next.next!=null){
                current=current.next;
            }


        current.next=null;}
}

为什么不使用列表界面的删除方法

LinkedList<String> sss = new LinkedList<String>();
sss.add("a");
sss.add("b");
sss.remove(sss.size() - 1); // removes "b"
LinkedList sss=新建LinkedList();
sss.添加(“a”);
sss.添加(“b”);
sss.remove(sss.size()-1);//删除“b”

当您执行
current=null
您将(本地)变量
current
设置为
null
,但列表中仍然指向同一个对象,您希望列表中的对象与其
next
成员(
someobject.next
)指向最后一个对象停止指向那里,因此需要更改
someobject.next
)的值,例如,
someobject.next=null

当前
是对链接列表中当前位置的引用。在while循环之后,
current
表示倒数第二个项目。当您说
current.next=null
时,您使当前对象的
next
变为
null
。使当前对象成为最后一个对象


当您说
current=null
时,您只是将本地引用变量设置为
null
。换句话说,它不再引用您的列表。它指的是
null

我自己写这篇文章只是为了练习