-2

したがって、基本的に循環リンクリストを作成しています。コードを印刷しようとすると、Eclipse のコンソールに何も印刷されません。私が望んでいるのは、6 つの数字すべてがコンソールに表示されることです。できれば助けてください。本当にありがとう!

public class CircularLinkedList 
{
    public Node head;
    public Node tail;

    public CircularLinkedList()
    {
        head =null;
        tail =null;
    }

    public void insert(int v)
    {   
        if( head == null)
        {
            head = new Node(v, null);
            tail = head;    
        }
        else 
        {   
            Node newNode = new Node(v,head); 
            tail.setNextNode(newNode); 
            tail = newNode;
        }
    }

    public String toString()
    {
        if( head == null)
        {
            System.out.println("The list is empty");
        }
        Node newTemp = head;
        String result = "";
        while(newTemp != head)
        {
            result += newTemp.toString();
            newTemp = newTemp.getNextNode();
        }
        return result;
    }

    public static void main(String[] args)
    {
        CircularLinkedList a = new CircularLinkedList();

        a.insert(1);
        a.insert(2);
        a.insert(3);
        a.insert(4);
        a.insert(5);
        a.insert(6);
        System.out.println(a.toString());
    }
}
4

3 に答える 3

-1

次のノードに進んでいないため、while ループは決して入りません。また、newTemp != head行が実際には正しく機能しない可能性があるため、Node クラスに追加情報を保存し、.equals() メソッドをオーバーライドして、このステップが確実に機能するようにすることもできます。

public String toString()
{
    if( head == null)
    {
        System.out.println("The list is empty");
    }
    Node newTemp = head;
    String result = newTemp.toString(); //Advance to the next node.
    newTemp = newTemp.getNextNode();
    while(newTemp != head) //The root cause of your problem.
    {
        result += newTemp.toString();
        newTemp = newTemp.getNextNode();
    }
    return result;
}
于 2013-06-03T03:21:50.127 に答える