Java中双链表的冒泡排序[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中双链表的冒泡排序[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在尝试为双链表实现冒泡排序,但我得到了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;
}
}
}
另一件事:我使用的这种方法我认为只会迭代一次列表,并且不会在开始时回头。我认为将tmp
和tmp2
从(1)
移动到(2)
可以解决问题。但我仍然收到一个NullPointerException
。
答案
这条线似乎是问题所在:
DLLNode<E> tmp2 = null; // (1)
在这里,您已经创建了一个空指针。几行后,没有任何进一步分配给tmp2
,你试图使用这个空指针访问tmp2.element2
,这会导致程序崩溃:
tmp2.element2 = tmp.element2;
在尝试访问其属性或方法之前,重新评估您的设计并确保已初始化所有对象。
以上是关于Java中双链表的冒泡排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章