2013-08-22 116 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)