java实现中的单链表,无限打印输出?
在下面的代码中,我试图实现一个单链接列表,在列表的开头添加元素。为什么我无限地得到“5”作为输出? 有人能帮忙解决这个问题吗?显示列表的正确实现应该是什么 类别1:-java实现中的单链表,无限打印输出?,java,data-structures,Java,Data Structures,在下面的代码中,我试图实现一个单链接列表,在列表的开头添加元素。为什么我无限地得到“5”作为输出? 有人能帮忙解决这个问题吗?显示列表的正确实现应该是什么 类别1:- package linkedList; public class SinglyLinkedList { private int data; private SinglyLinkedList next; public int getData() { return data; }
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();
}
}
您对链接列表的实现不一致。您从未为
impl
设置next
。如果您真的想实现这样的链表,那么您必须为要添加到链接列表中的每个项目创建一个新的SingleLinkedListImpl
,并设置下一步。但我建议大家看一看如何创建链表的教程。问题在于要插入列表中的对象,即插入两次的对象。这意味着:
data
字段将始终具有您使用setData()
设置的最后一个值
由于next
字段指向同一个节点,因此会得到一个循环
解决方案:
为添加到列表中的每个节点创建一个新的SingleLinkedList
实例。在debugger下一步一步地运行代码,您就会看到原因。提示:您的列表应该有两个元素,但您只分配一个。在调试器中逐步执行代码时,请仔细检查对象及其字段的值。PS。将您的类重命名为SinglyLinkedList
为Node
,因为它是:列表中的一个节点,而不是列表。非常感谢yurib,我错过了这一点:(