java实现中的数据结构单链表,无限打印输出?
在下面的代码中,我试图实现一个单链接列表,在列表的开头添加元素。为什么我无限地得到“5”作为输出? 有人能帮忙解决这个问题吗?显示列表的正确实现应该是什么
类别1:-
package linkedList;
public class SinglyLinkedList {
private int data;
private SinglyLinkedList next;
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public SinglyLinkedList getNext() {
return next;
}
public void setNext(SinglyLinkedList next) {
this.next = next;
}
}
第2类:-
package linkedList;
public class SingleLinkedListImpl {
public SingleLinkedListImpl() {
length =0;
}
SinglyLinkedList head;
private int length;
public SinglyLinkedList getHead() {
return head;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public void insertAtBegin(SinglyLinkedList listNode) {
listNode.setNext(head);
head = listNode;
length ++;
}
public void showLinkedList(){
SinglyLinkedList p,q;
p=head;
while(p.getNext()!=null){
System.out.println(p.getData());
p=p.getNext();
}
}
public static void main(String[] args) {
SingleLinkedListImpl impl= new SingleLinkedListImpl();
SinglyLinkedList linkedList= new SinglyLinkedList();
linkedList.setData(3);
impl.insertAtBegin(linkedList);
linkedList.setData(5);
impl.insertAtBegin(linkedList);
impl.showLinkedList();
}
}
# 1 楼答案
您对链接列表的实现不一致。您从未为
impl
设置next
。如果您真的想实现这样的链表,那么必须为要添加到linkedlist
的每个项目创建一个new SingleLinkedListImpl
,并设置next
。但是我建议看一看如何创建链表的教程# 2 楼答案
问题是您要插入列表中的对象-它是您插入两次的同一个对象。这意味着:
data
字段将始终具有您使用setData()
设置的最后一个值李>next
字段指向同一个节点,所以会得到一个循环李>解决方案:
为添加到列表中的每个节点创建
SinglyLinkedList
的新实例