为什么不能从数组创建单向链表?
Why can't I create a singly linked list from an array?
我需要为我的整数数组制作一个单链表,但是,我现在不知道我的代码目前有什么问题。
这是创建节点的代码。 (数据)
package sllset;
class SLLNode {
int value;
SLLNode next;
public SLLNode(int i, SLLNode n){
value = i;
next = n
}
}
我的另一个 class 具有我的方法和构造函数,如下所示。
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());
}
}
我的问题是我的第二个构造函数不起作用,我也不知道为什么。我一直在遵循有关如何使用大部分功能的指南,因此我认为我对代码的了解还不足以破译问题。
编辑:所以有人告诉我指定我在第 19 行得到 NULLPointerException 的问题;我在哪里编码 head.next = head; .然而,当
我删除那部分进行测试,第 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;
}
}
我需要为我的整数数组制作一个单链表,但是,我现在不知道我的代码目前有什么问题。
这是创建节点的代码。 (数据)
package sllset;
class SLLNode {
int value;
SLLNode next;
public SLLNode(int i, SLLNode n){
value = i;
next = n
}
}
我的另一个 class 具有我的方法和构造函数,如下所示。
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());
}
}
我的问题是我的第二个构造函数不起作用,我也不知道为什么。我一直在遵循有关如何使用大部分功能的指南,因此我认为我对代码的了解还不足以破译问题。
编辑:所以有人告诉我指定我在第 19 行得到 NULLPointerException 的问题;我在哪里编码 head.next = head; .然而,当 我删除那部分进行测试,第 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;
}
}