我在尝试将节点添加到已初始化为null的链接列表时出现问题。在我的方法中,我设置了一个测试用例来检查节点是否最初是空的,如果是,它会创建一个新的节点,并且传入的值是这个节点。但是,无论出于何种原因,除非节点已经传递了至少一个元素在检查出来:将节点添加到初始空链接列表
Node addNode(Node node, int val)
{
if(node == null)
{
Node newNode = new Node(val);
//node = newNode;
return newNode;
}
node.next = addNode(node.next, val);
return node;
}
//Driver Class
Scanner in = new Scanner(System.in);
Node myNode = new Node(1);
int numEntries = in.nextInt();
for(int i = 0 ; i < numEntries ; i++)
{
int inputVal = in.nextInt();
myNode.addNode(myNode, inputVal);
}
如果MYNODE被初始化为空值,上面的代码将无法运行(节点MYNODE = NULL;)
全码:
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static class Node
{
private int value;
Node next;
public Node()
{
next = null;
}
public Node(int val)
{
value = val;
next = null;
}
Node addNode(Node node, int val)
{
if(node == null)
{
Node newNode = new Node(val);
//node = newNode;
return newNode;
}
node.next = addNode(node.next, val);
return node;
}
}
public static void main (String[] args) throws java.lang.Exception
{
Scanner in = new Scanner(System.in);
Node myNode = new Node(1);
Node current = null;
Node oddFirst = new Node(1);
int numEntries = in.nextInt();
for(int i = 0 ; i < numEntries ; i++)
{
int inputVal = in.nextInt();
myNode.addNode(myNode, inputVal);
}
current = myNode;
while(current != null) // Check if values were copied correctly
{
if(oddFirst == null)
{
oddFirst = new Node(current.value);
}
oddFirst.addNode(oddFirst,current.value);
//oddFirst = current.next;
//oddFirst = oddFirst.next;
current = current.next.next;
}
while(oddFirst != null)
{
System.out.println("Current Value: " + oddFirst.value);
oddFirst = oddFirst.next;
}
}
}
你是说你试图将myNode初始化为null,然后在for循环中调用'myNode.addNode()'吗? – gla3dr
@ gla3dr是的,这就是我说的。 –
为什么不使用java.util.LinkedList?并简单地做list.add(新节点(inputVal)); 您是否有特殊的需求,不允许标准库中已有的链表实现? – reegnz