Java中双链表的冒泡排序[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在尝试为双链表实现冒泡排序,但我得到了NullPointerException

这是代码:

public void bubbleSort()
{           
    DLLNode<E> tmp = this.first; // (1)
    DLLNode<E> tmp2 = null; // (1)
    boolean flag = true;
    while(flag)
    {
        // (2)
        flag = false;
        while(tmp.succ!=null)
        {

            if(tmp.element2.compareTo(tmp.succ.element2)<0)
            {
                tmp2.element2 = tmp.element2;
                tmp.element2 = tmp.succ.element2;
                tmp.succ.element2 = tmp2.element2;
                tmp2.element1 = tmp.element1;
                tmp.element1 = tmp.succ.element1;
                tmp.succ.element1 = tmp2.element1;
                flag = true;
            }
            tmp = tmp.succ;
        }
    }
}

另一件事:我使用的这种方法我认为只会迭代一次列表,并且不会在开始时回头。我认为将tmptmp2(1)移动到(2)可以解决问题。但我仍然收到一个NullPointerException

java linked-list bubble-sort
1个回答
0
投票

这条线似乎是问题所在:

DLLNode<E> tmp2 = null; // (1)

在这里,您已经创建了一个空指针。几行后,没有任何进一步分配给tmp2,你试图使用这个空指针访问tmp2.element2,这会导致程序崩溃:

tmp2.element2 = tmp.element2;

在尝试访问其属性或方法之前,重新评估您的设计并确保已初始化所有对象。

© www.soinside.com 2019 - 2024. All rights reserved.