【问题标题】:Why i am getting infinite loop为什么我得到无限循环
【发布时间】:2020-05-09 19:10:48
【问题描述】:
public void insertion(int data)
    {
        Node new_node = new Node(data);
        if(head==null)
        {
            head=new_node;
        }
        new_node.next=head;
        head=new_node;
    }

我想在 head 为空时插入 new_node。

我得到了我想插入节点的第一个值的无限循环

【问题讨论】:

  • 请标记语言。我假设是 Java?

标签: singly-linked-list insertion


【解决方案1】:

当head == null 为真时,您基本上会这样做:

head = new_node;
new_node.next = head;

仔细考虑这些行。第一行运行后,head 是 new_node。考虑到这一点,第二行基本上相当于

new_node.next = new_node;

这应该突出问题。您正在将新节点的尾部设置为自身!这将导致循环列表在迭代时无限继续。

您最初只想设置head'snextwhenhead*wasn't*null`:

public void insertion(int data)
{
    Node new_node = new Node(data);
    if(head==null)
    {
        head=new_node;

    } else {
        new_node.next=head;  // Only execute these lines if head already existed
        head=new_node;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多