为什么我得到无限循环

问题描述 投票:-2回答:1
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。

我想把第一个值插入到节点中,却得到无限循环。

singly-linked-list insertion
1个回答
0
投票

head == null 是真的,你基本上是这样的。

head = new_node;
new_node.next = head;

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

new_node.next = new_node;

这应该突出了问题所在。你把新节点的尾巴设置成了自己的尾巴!这将导致循环列表在迭代时无限地继续下去。这将导致一个循环列表,在迭代时将无限地继续下去。

你只想设置 head's接下来when脑袋*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;
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.