2013-03-14 88 views
0

給定兩個雙鏈表我應該改變,不僅僅是元素,而是一個列表的節點,以便相同位置的和等於一定數量。替換雙鏈表中的節點

public void repair(int num){ 
    Node list1 = head1; 
    Node right = head2; 

    for(int i = 0; i<size; i++){ 
     int element = num - list1.element; 
     Node p = right.previous; 
     Node s = right.next; 
     right = new Node(element, null, null); 

     p.next = right; 
     right.previous = p; 
     right.next = s; 
     s.previous = right; 

     list1 = list1.next; 
     right = right.next; 
    } 
} 

size =這兩個列表的大小相同。 我已經嘗試了很多東西,但它總是會給我p.next = right和s.previous = right的nullpointerexception;

我不明白爲什麼它給了我這個錯誤。有人能解釋並告訴我一種解決這個問題的方法嗎?

回答

1

這意味着p是null

Node p = right.previous; 

必須返回null

眼見爲right定義爲head2,你將不得不考慮頭2和明白爲什麼head2.previous爲空。我想這是列表的開始或什麼的。

您需要將空檢查置於空,以便您只在下一個/上一個節點上運行操作時它們不爲空。