这是我在java中链表的代码。代码进入无限循环,我无法弄清楚问题。可能出错的地方。
import java.io.*;
class LinkedList
{
public int data;
public LinkedList next;
LinkedList add(int a,LinkedList ob)
{
LinkedList p=ob;
if(ob==null)
{
this.data=a;
ob=this;
return ob;
}
else
{
while(p.next!=null)
{
if(p.next==null)
break;
else
p=p.next;
}
this.data=a;
this.next=null;
p.next=this;
}
return null;
}
void display(LinkedList ob)
{
LinkedList p=ob;
while(p!=null)
{
System.out.println(p.data);
p=p.next;
}
}
public static void main(String []args)throws IOException
{
LinkedList head=null;
LinkedList o=new LinkedList();
head=o.add(5,head);
o.add(6,head);
o.add(7,head);
o.display(head);
}
}
头部正确进入,但是其他元素正在产生问题。
答案 0 :(得分:2)
你也应该有一个LinkedList toAdd(这应该是一个节点,但你这样做的方式是一个LinkedList)
LinkedList p=ob;
LinkedList toAdd=new LinkedList();
并在add方法的最后设置部分,将其替换为toAdd
toAdd.data=a;
toAdd.next=null;
p.next=toAdd;
答案 1 :(得分:2)
之后
o.add(6,head);
在add(),
p.next=this; // this is causing infinite loop. A node is pointing to itself.<br>
请参考以下add()方法到LinkedList:
LinkedList add(int a,LinkedList ob)
{
//for creating head
if(ob==null)
{
this.data=a;
ob=this;
return ob;
}
else
{
// iterate till the last node
while(ob.next!=null)
{
ob = ob.next;
}
LinkedList p = new LinkedList();
p.data = a;
p.next = null;
ob.next = p;
}
return null;
}