-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 toAddも必要です(これはNodeである必要がありますが、あなたがやっている方法は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);


add() では、

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

以下の LinkedList への add() の方法を参照してください。

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 に答える