Insert a position in a linked list Java(在链接列表中插入位置Java)
问题描述
我的问题是:编写一个函数,将一个新项插入到给定位置的整数链表中。 我的代码是:
public static SinglyLinkedListNode insert_at_position(SinglyLinkedListNode head, int val, int pos) {
SinglyLinkedListNode temp = head;
if (pos == 0)
{
SinglyLinkedListNode newNode = new SinglyLinkedListNode(val);
newNode = temp;
head = newNode;
}
else if (pos > 0)
{
SinglyLinkedListNode newNode = new SinglyLinkedListNode(val);
newNode = temp;
head = newNode;
for (int i = 0 ; i <= pos; i++)
{
temp = head.next;
if (i == pos)
{
head.next = newNode;
newNode = temp;
}
}
}
return head;
}
我的代码只打印很多1。它有什么问题?
推荐答案
一些问题:
代码创建一个新节点,将其分配给
newNode
,然后立即将temp
分配给newNode
,从而丢失对新创建节点的引用temp
用head
的值初始化,然后newNode
得到temp
的值,然后head
得到temp
的值。这意味着您已将head
设置为...head
,即无操作。循环在每次迭代中执行
temp = head.next;
。这将始终将相同的引用放入temp
...每次它执行的时候。因此循环的迭代次数变得无关紧要。temp
将始终引用列表中的第二个节点。这样做会更有意义temp = temp.next
在上次迭代中设置
head.next = newNode;
...即使忽略您对temp
所做的操作。此赋值不使用在循环迭代期间所做的任何操作。它也可以在循环之外执行。最后一条语句
newNode = temp
没有做任何有用的事情。newNode
从未在该语句之后使用过,因此它也可能不在那里。如果是newNode.next = temp
,那就更有意义了。这将有效地将newNode
链接到可能的下一个节点。循环迭代次数太多。因为您已经使用
pos == 0
在列表的开始处插入了新节点,所以pos == 1
应该在head
节点之后插入新节点,因此不需要迭代。仅当pos > 2
需要迭代时。
以下是更正后的版本:
public static SinglyLinkedListNode insert_at_position(SinglyLinkedListNode head,
int val, int pos) {
SinglyLinkedListNode newNode = new SinglyLinkedListNode(val);
if (pos == 0) {
newNode.next = head;
head = newNode;
} else if (pos > 0) {
SinglyLinkedListNode temp = head;
for (int i = 1; i < pos; i++) {
temp = temp.next;
}
newNode.next = temp.next;
temp.next = newNode;
}
return head;
}
这篇关于在链接列表中插入位置Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在链接列表中插入位置Java
基础教程推荐
- Java:带有char数组的println给出乱码 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 降序排序:Java Map 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01