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
				
        
 
            
        - C++ 和 Java 进程之间的共享内存 2022-01-01
 - Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
 - value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
 - 将log4j 1.2配置转换为log4j 2配置 2022-01-01
 - Jersey REST 客户端:发布多部分数据 2022-01-01
 - Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
 - Java包名称中单词分隔符的约定是什么? 2022-01-01
 - 从 finally 块返回时 Java 的奇怪行为 2022-01-01
 - 如何使用WebFilter实现授权头检查 2022-01-01
 - Eclipse 插件更新错误日志在哪里? 2022-01-01
 
						
						
						
						
						