在单链表的Java实现中,为什么不显示链表的最后一个元素?

问题描述 投票:0回答:1
public class Linked_List <E>{
    public static class Node<E>{
        private E element;
        private Node<E> next;
        public Node(E e,Node<E> n) {
        element=e;
        next=n;
    }
    public E getElement() {
        return element;
    }
    public Node<E> getNext() {
        return next;
    }
    public void setNext(Node<E> n) {
        next=n;
    }
}

public Node<E> head=null;
public Node<E> tail=null;
public int size=0;

public Linked_List() {}

public int size() {
    return size;
}

public boolean isEmpty() {
    return size==0;
}
public void addFirst(E e) {
    head=new Node<>(e,head);
    if(size==0)
        head=tail;
    size++;
}

public void addLast(E e) {
    Node<E> newest =new Node<>(e,null);
    if(isEmpty())
        head=newest;
    else
        tail.setNext(newest);
    tail=newest;
    size++;
}
public void show() {

    Node<E> n=head;
    if(size==0) {
        System.out.println("No elements to print");
        System.exit(0);
    }
    while(n.next!=null) {
        System.out.println(n.element);
        n=n.next;
    }
    System.out.println(n.element);
}

public static void main(String[] args) {
    Linked_List<Integer> list = new Linked_List<Integer>();

    list.addFirst(10);
    list.addFirst(11);
    list.addFirst(12);

    list.show();

}
}

在show()方法中,当while到达列表的最后一个元素时,它退出,因此该元素不会被打印。因此,show方法中的最后一个打印语句。我已经在列表中添加了三个元素,但是当我执行show()方法时,只有前两个元素12和11会被打印出来。我想念的是什么?谢谢。

java data-structures linked-list singly-linked-list
1个回答
1
投票

这里呢。这应该说tail = head;


0
投票

问题出在while循环中:

© www.soinside.com 2019 - 2024. All rights reserved.