-4

这是我在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);        
}
}

头部正确插入,但其他元素正在产生问题。

4

2 回答 2

2

你也应该有一个要添加的 LinkedList(这应该是一个节点,但是你这样做的方式是一个 LinkedList)

LinkedList p=ob;
LinkedList toAdd=new LinkedList();

并在您设置其部分的 add 方法的末尾,将其替换为 toAdd

toAdd.data=a;
toAdd.next=null;
p.next=toAdd;
于 2013-03-10T06:54:20.893 回答
2


o.add(6,head);


在添加()中,

p.next=this; // this is causing infinite loop. A node is pointing to itself.<br>

请参考以下 add()'ing 到 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;    
}
于 2013-03-10T07:04:46.373 回答