为什么我会陷入无限循环

时间:2020-05-09 19:10:48

标签: singly-linked-list insertion

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为null时插入new_node。

我正在插入要插入节点的第一个值的无限循环

1 个答案:

答案 0 :(得分:0)

head == null为true时,您实际上是这样做的:

head = new_node;
new_node.next = head;

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

new_node.next = new_node;

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

您最初只想设置head's下一个when*wasn't*空`

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;
    }

}