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会被打印出来。我想念的是什么?谢谢。
这里呢。这应该说tail = head
;
问题出在while循环中: