如何使用java在Linked List中插入节点?

时间:2017-06-24 06:00:57

标签: java linked-list

我正在尝试这种方法,但我无法弄清楚问题。我认为在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();
    }
}

2 个答案:

答案 0 :(得分:0)

你不想做

nxt

这实际上不会改变列表 - 它只会让 nxt.next = new Node(data); 引用一个新节点而不是列表末尾的节点。你真的想做

x.GetType().GetProperty(typeof(TEntity).Name + "Id")

答案 1 :(得分:0)

在插入新节点时,必须将先前节点的next 设置为此新节点 - nxt = new Node(data) 设置变量。提示:当节点nextnull而不是null节点时结束循环(将循环变量从nxt重命名为node或{{ 1}})并将其last设置为新节点。

换句话说,找到最后一个节点并将其next设置为新节点。

建议改进:只需将其保存为列表类的字段,而不是返回列表的头部。最初它为null并设置为插入的第一个节点。这可以避免您无法将其保留在列表之外......