双重链表

时间:2016-06-13 07:27:56

标签: java doubly-linked-list

我正在尝试拆分我的双向链表。但是我在sublist.head = mid.next上得到了nullpointer异常。这是否意味着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;
        }

}

1 个答案:

答案 0 :(得分:2)

如果声明:

 sublist.head = mid.next;

(孤立地)投掷NPE,意味着:

  • sublistnull,或者
  • midnull,或者
  • 他们都是null

(您可以通过调试器和条件断点,或通过添加一些临时跟踪打印或断言来确定哪个。)