为什么我不能从数组创建单向链表?



我需要为我的整数数组创建一个单链列表,但是,我不知道我的代码现在有什么问题。

这是创建节点的代码。(数据)

package sllset;
class SLLNode {
    int value;
    SLLNode next;
public SLLNode(int i, SLLNode n){
    value = i;
    next = n   
    }   
}

我的另一个类,它有我的方法和构造函数是这样的。

package sllset;

public class SLLSet {
    private int setSize;
    private SLLNode head;
public SLLSet(){
    head = null;
    setSize = 0;
}
public SLLSet(int[] sortedArray){ //second constructor
    setSize = sortedArray.length;
    int i;
    head=null;
    for(i=0;i<setSize;i++){
        head.next = head;
        head = new SLLNode(sortedArray[i],head.next);    
    }
}

public String toString(){
    SLLNode p;
    String result = new String();
    for(p=head ; p!=null ; p=p.next)
        result += p.value;
    return result;
}
public static void main(String[] args) {
int[] A = {2,3,6,8,9};
SLLSet a = new SLLSet(A);
System.out.println(a.toString());
    }
}

我的问题是我的第二个构造函数不工作,我真的不知道为什么。我一直在遵循如何制作这些函数的指南,所以我猜我对代码的了解不足以破译这个问题。

编辑:所以有人告诉我指定的问题,我得到一个NULLPointerException在第19行;我写代码的地方。Next =头部;. 然而,当我删除该部分进行测试,第20行得到错误消息

让我们看看这个

head=null;     // you are setting head to null
for(i=0;i<setSize;i++){
    head.next = head;  // see two lines up, head is null, it can not have next

构造函数有一些问题。尝试使用这个版本:

public SLLSet(int[] sortedArray){ //second constructor
    head = null;
    if (sortedArray == null || sortedArray.length == 0) {
        setSize = 0;
    }
    setSize = sortedArray.length;
    head = new SLLNode(sortedArray[0], null);
    SLLNode curr = head;
    for (int i=1; i < setSize; ++i) {
        curr.next = new SLLNode(sortedArray[i], null);
        curr = curr.next;
    }
}

相关内容

  • 没有找到相关文章

最新更新