gpt4 book ai didi

java - 使用java在链表中插入节点

转载 作者:行者123 更新时间:2023-12-02 11:49:00 26 4
gpt4 key购买 nike

我是java初学者。我正在尝试使用java实现简单的链表结构。

我编写了以下代码,在链接列表的末尾插入节点。

 public static  Node insert(Node head,int data) {
if(head == null)
{
Node temp = new Node(data);
head = temp;
return head;
}
else
{
Node temp = new Node(data);
Node current = head;
while(current != null)
{
current = current.next;
}
current = temp;
return head;
}
}

Node类定义如下

class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}

类 LinkListDemo 具有 insert()、display() 和 main() 方法,如下所示。

 class LinkListDemo
{
public static Node insert(Node head,int data) {
if(head == null)
{
Node temp = new Node(data);
head = temp;
return head;
}
else
{
Node temp = new Node(data);
Node current = head;
while(current != null)
{
current = current.next;
}
current = temp;
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();
}
}

输入:4 2 3 4 1

我输入为4(要插入的节点数)2 3 4 1(对应的节点值)

我预计输出为 2 3 4 1但输出只有2。

请帮我改正我的错误。提前致谢。

最佳答案

问题出在插入方法的 else 部分。您将循环直到 current 变为 null,然后将新节点 temp 分配给它。将引用分配给新节点(temp)不会将其附加(或链接)到列表的末尾。

正确的方法是转到最后节点,然后链接新节点,即使最后一个节点的下一个指向新节点。

应该是这样的

while(current.next != null) {
current = current.next;
}
current.next = temp;

关于java - 使用java在链表中插入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48011024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com