2016-06-13 39 views
1

我正在試圖分裂我的雙向鏈表。但是我在sublist.head = mid.next上得到了空指針異常。這是否意味着sublist.head指向null?我該如何解決這個問題?雙鏈表

public void splitMid(DoublyLinkedList<T> sublist) 
{ 
    Node<T> current; 
    Node<T> mid; 
    int i; 
    if (head == null) 
    { 
     sublist.head = null; 
     sublist.rear = null; 
     sublist.count = 0; 
    } 
    else 
     if (head.next == null) 
     { 
      sublist.head = null; 
      sublist.rear = null; 
      sublist.count = 0; 
     } 
     else 
     { 
      mid = head; 
      current = head.next; 
      i = 1; 
      if (current != null) 
       current = current.next; 
      while (current != null) 
      { 
       mid = mid.next; 
       current = current.next; 
       i++; 
       if (current != null) 
        current = current.next; 
      } 
      sublist.head = mid.next; 
      sublist.rear = rear; 
      rear = mid; 
      rear.next = null; 
      sublist.count = count - i; 
      count = i; 
     } 

} 
+0

除非你是在此爲了工作,學習如何實現雙鏈接列表中,我建議你使用'LinkedList'來替代,這是一個雙向鏈表... –

回答

2

如果本聲明:

sublist.head = mid.next; 

(攝於隔離)被拋出NPE,這意味着:

  • sublistnull,或
  • midnull, OR
  • both o f他們是null

(你可以找出它與任何一個調試器&條件斷點,或通過添加一些臨時性跟蹤打印或斷言。)

+0

我認爲(a || b)已經涵蓋了(a && b)的情況......爲什麼這麼明確? :) –

+1

'因爲我是一個童話......並且OR不是Java操作員:-) –

+0

我是否正確認爲以前不需要,因爲它正在分裂因此它只是下一個 –