这是尝试为双向链表(DLL)编写插入排序函数。它以insertion-sort as known for arrays为模型。我得到NullPointerException
。为什么?
在排序之前,列表如下所示:aaa zzz Ciao Salut Hi Hello
public static DLL sort(DLL list)
{
DLLNode ptr2 = list.first.succ ;
while (ptr2 != null)
{
DLLNode ptr1 = ptr2.pred ;
String curr = ptr2.elem ;
while (ptr1 != list.first && curr.compareToIgnoreCase(ptr1.elem) < 0)
{
ptr1.succ.elem = ptr1.elem ;
ptr1 = ptr1.pred ;
}
ptr1.succ.elem = curr ;
ptr2 = ptr2.succ ;
}
return list ;
}
答案 0 :(得分:0)
您可以使用调试器或旧的System.out.println
方法。
看的地方:
curr
之前 curr.compareTo...
在ptr1.succ
ptr1.succ.elem = ...
在ptr2
ptr2.succ
在ptr1
ptr1.elem
但是您的异常会告诉您异常的来源
答案 1 :(得分:0)
您可以尝试向后打印列表,以确保所有node.pred
都不为空。