我在嘗試將節點添加到已初始化爲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