我正在尝试这种方法,但我无法弄清楚问题。我认为在insert()方法中存在一些问题,因为我没有使用递归,但我无法确切地指出它。 提前谢谢。
import java.io.*;
import java.util.*;
class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
class Solution {
public static Node insert(Node head,int data) {
//Some problem in this method
if(head==null)
return new Node(data);
else{
Node nxt = head;
while(nxt!=null)
nxt = nxt.next;
nxt = new Node(data);
return head;
}
}
public static void display(Node head) {
Node start = head;
while(start != null) {
System.out.print(start.data + " ");
start = start.next;
}
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
Node head = null;
int N = sc.nextInt();
while(N-- > 0) {
int ele = sc.nextInt();
head = insert(head,ele);
}
display(head);
sc.close();
}
}
答案 0 :(得分:0)
你不想做
nxt
这实际上不会改变列表 - 它只会让 nxt.next = new Node(data);
引用一个新节点而不是列表末尾的节点。你真的想做
x.GetType().GetProperty(typeof(TEntity).Name + "Id")
答案 1 :(得分:0)
在插入新节点时,必须将先前节点的next
设置为此新节点 - nxt = new Node(data)
仅设置变量。提示:当节点next
为null
而不是null
节点时结束循环(将循环变量从nxt
重命名为node
或{{ 1}})并将其last
设置为新节点。
换句话说,找到最后一个节点并将其next
设置为新节点。
建议改进:只需将其保存为列表类的字段,而不是返回列表的头部。最初它为null并设置为插入的第一个节点。这可以避免您无法将其保留在列表之外......