Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态链表快速排序_Java_Nullpointerexception - Fatal编程技术网

Java 动态链表快速排序

Java 动态链表快速排序,java,nullpointerexception,Java,Nullpointerexception,我正在尝试为我创建的动态链接列表类创建一个快速排序方法。但我一直收到一个空点异常,无法找出原因 private void addToEnd(IntList y){ if(y.head != null ){ IntNode tmp = this.head; while(tmp.getNext() != null){ //line 68 tmp = tmp.getNext(); } tmp.setNext(y.head); } } public

我正在尝试为我创建的动态链接列表类创建一个快速排序方法。但我一直收到一个空点异常,无法找出原因

 private void addToEnd(IntList y){
if(y.head != null ){
        IntNode tmp = this.head;
    while(tmp.getNext() != null){     //line 68
    tmp = tmp.getNext();

}
tmp.setNext(y.head);
}
  }


 public IntList Quicksort(){
if(this.length() > 1){
    IntList bList = new IntList();
    IntList sList = new IntList();
    IntList pivot = new IntList();

    pivot.addNode(head);
    int pivotInt = this.head.getValue();
    IntNode test = this.head.getNext();

    while(test != null){

        if(test.getValue() > pivotInt){

            bList.addNode(test);

        }else{ sList.addNode(test);}

    test = test.getNext();
}

    sList.Quicksort().addToEnd(pivot);
    sList.addToEnd(bList.Quicksort());


}
return this;
}
我在第68行得到NullPointerException,不知道为什么。有人能帮我吗?第68行是

while(tmp.getNext() != null){     //line 68
我在第68行得到NullPointerException,不知道为什么

“为什么”是指
tmp
为空:

IntNode tmp = this.head;
while(tmp.getNext() != null){     //line 68
换句话说,
这个
是一个
IntList
(我猜)在它的
字段中有
null

但这是否是一个“有效”状态,以及(如果不是)它是如何进入该状态的,这是任何人的猜测。如果这是一个有效状态,那么修复方法是重写
addToEnd
,以正确处理添加到空列表的情况;i、 e.
此.head
为空。(这并不像下面的评论所说的那么简单……但这显然是一个学习练习,所以你可以自己解决。)



(FWIW,对链接列表进行排序从来都不是一件容易或有效的事情。简单的方法是将列表元素复制到数组中,对数组进行排序,然后重新填充列表。)

为什么?快速排序是为数组设计的。-1,请发布堆栈跟踪和错误所在的行。我们不打算数68行免费帮助陌生人。我知道,但这是我被要求的,所以我不同意谁:)
while(tmp!=null){
真的可以解决这个问题。这是假设一个IntList的头为
null
是有效的。我不准备在没有看到其余代码的情况下进行调用。