【发布时间】:2021-01-06 11:50:27
【问题描述】:
这是我从 geeksforgeeks 获得的关于在单链表末尾插入节点的代码。第四步没看懂。为什么 new_node.next 在创建 new_node 时未初始化时应该为 null?
// Linked List Class
class LinkedList
{
Node head; // head of list
/* Node Class */
class Node
{
int data;
Node next;
// Constructor to create a new node
Node(int d) {data = d; next = null; }
}
/* Appends a new node at the end. This method is
defined inside LinkedList class shown above */
public void append(int new_data)
{
/* 1. Allocate the Node &
2. Put in the data
3. Set next as null */
Node new_node = new Node(new_data);
/* 4. If the Linked List is empty, then make the
new node as head */
if (head == null)
{
head = new Node(new_data);
return;
}
/* 4. This new node is going to be the last node, so
make next of it as null */
new_node.next = null;
/* 5. Else traverse till the last node */
Node last = head;
while (last.next != null)
last = last.next;
/* 6. Change the next of last node */
last.next = new_node;
return;
}
}
【问题讨论】:
-
顺便说一下,第二块代码的顶部被切掉了一点到阴影块的外面。
-
我打算重新格式化代码,但它比没有正确缩进更糟糕。我认为
append方法在LinkedList类定义之外,但应该在其中。 - 但我不确定我是否应该修复它。 -
我同意你的看法@qwerty。我认为分配是不必要的。
-
@querty - 您需要缩进所有代码,以便其格式正确。 “{}”工具将为您做到这一点。
-
末尾的
return也是不必要的。 - 并且有两个步骤#4s