0

我写了一个简单的方法来在另一个链表的末尾附加一个链表。所以理想情况下程序应该做的是当我给它两个列表时

list1 ===>1->2->3
list2 ===>4->5->6

更新列表==>1->2->3->4->5->6

但是当我运行该方法时appendList,它会无限循环地打印 1 到 6。我在这里做错了什么?

public static Node appendList(Node head1, Node head2) {
    Node prev = null;
    Node current = head1;
    while (current != null) {
        prev = current;
        current = current.next;
    }
    prev.next = head2;
    return head1;
}

哦,我忘了添加 Node 类以及如何从我的 main 中调用该方法。我知道它有点麻烦,但它是

public class ReverseLinkedList {

class Node {
    int data;
    Node next;

    Node(int data) {
        this.data = data;
    }

    public void displayData() {
        System.out.println(data);
    }
}

public static void main(String args[]) {
    ReverseLinkedList reversedList = new ReverseLinkedList();

    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the length of  the linked list!!");
    int listSize = scanner.nextInt();
    System.out.println("Enter the Numbers you want to insert!!");
    int count = 0;
    while (scanner.hasNextLine()) {

        if (count == listSize)
            break;
        reversedList.insert(scanner.nextInt());
        count++;
    }
    System.out.println("Inserted List !!");
    reversedList.displayList();
    /*
     * Node reverseNodeStart =
     * reversedList.reverseList1(reversedList.first);
     * System.out.println("Reversed List !!"); while (reverseNodeStart !=
     * null) { reverseNodeStart.displayData(); reverseNodeStart =
     * reverseNodeStart.next; }
     */
    Node reverseNodeStart = reversedList.appendList(reversedList.first,
            reversedList.first);
    while (reverseNodeStart != null) {
        reverseNodeStart.displayData();
        reverseNodeStart = reverseNodeStart.next;
    }

}
}
4

1 回答 1

0

问题是我使用的是导致循环引用的同一个列表。它现在工作正常。你甚至在我发布代码之前就知道问题了,这令人印象深刻。谢谢!!我通过创建一个新的 List2 并传入 List1 和 List2 来解决它。

  appendList(Node lis1head, Node list2head)
于 2013-08-23T01:31:29.593 回答