2013-08-22 271 views
0

我寫了一個簡單的方法在環環相扣list.So什麼程序應該理想地做的是結束的時候我給它兩個列表追加兩個鏈接列表

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

追加一個鏈表updatedList ==>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類,我如何調用該方法從我的主。我知道它有點麻煩,但在這裏它是

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; 
    } 

} 
} 
+2

該代碼中沒有打印,在無限循環中打印1到6是什麼?你是否也調用過'appendList(list2,list1)'? –

+1

你確定'head1'列表沒有循環引用嗎?我會製作2個列表,每個列表2個,然後遍歷調試器中的代碼,以查看到底發生了什麼以及當current.next指向列表末尾的時候。 –

+0

我做了一個編輯請看看! –

回答

0

的問題是我用的是相同的這是引起循環引用的列表。它現在工作正常。甚至在我發佈代碼之前,你就知道這個問題,現在令人印象深刻。謝謝!!我通過創建一個新的List2並傳入List1和List2來解決它。

appendList(Node lis1head, Node list2head)