在双向链表上插入排序

时间:2011-03-28 19:56:03

标签: java algorithm

这是尝试为双向链表(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 ;
}

2 个答案:

答案 0 :(得分:0)

您可以使用调试器或旧的System.out.println方法。

看的地方:

    curr

    之前
  • curr.compareTo...ptr1.succ

  • 之前
  • ptr1.succ.elem = ...ptr2

  • 之前
  • ptr2.succptr1

  • 之前
  • ptr1.elem

但是您的异常会告诉您异常的来源

答案 1 :(得分:0)

您可以尝试向后打印列表,以确保所有node.pred都不为空。