使用java在链表中插入节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java在链表中插入节点相关的知识,希望对你有一定的参考价值。
我是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;
另一答案
在你的insert()代码中,你应该有
while(current.next != null)
{
current = current.next;
}
在您的代码中,您当前的变量将始终为null,从而导致您的节点实际上未被插入。此修复使您的当前变量成为列表中的最后一个节点,以便您可以设置最后一个节点指向新节点的指针。
另一答案
我正在使用以下代码插入节点
public void addFirst(int e) {
if (head == null) {
head = new LinkListNode(e);
tail = head;
size = 1;
} else {
LinkListNode nextNode = new LinkListNode(e);
nextNode.setNext(head);
head = nextNode;
size++;
}
}
工作正常......
另一答案
只需改变一点代码
Node current = head;
while(current.next != null)
{
current = current.next;
}
current.next= temp;
并回头
以上是关于使用java在链表中插入节点的主要内容,如果未能解决你的问题,请参考以下文章