【发布时间】:2021-01-07 00:32:14
【问题描述】:
这是在双向链表前面添加一个节点的代码。我在这里不明白的是第 4 步。就在这里,在我看来,它将 new_Node 的地址存储到变量 head.prev 中。变量 head.prev 现在将保存新节点。这甚至没有意义,因为变量 'head' 也将包含 new_node。所以现在我们有两个变量指向同一个地址。
即使,在任何情况下,这段代码的意思是 new_node = head.prev,这也是没有意义的,因为此时 head.prev 将为空,然后 new_node 将指向空.
// 双向链表类 公共类 DLL { 节点头; // 列表头
/* Doubly Linked list Node*/
class Node {
int data;
Node prev;
Node next;
// Constructor to create a new node
// next and prev is by default initialized as null
Node(int d) { data = d; }
}
// Adding a node at the front of the list
public void push(int new_data)
{
/* 1. allocate node
* 2. put in the data */
Node new_Node = new Node(new_data);
/* 3. Make next of new node as head and previous as NULL */
new_Node.next = head;
new_Node.prev = null;
/* 4. change prev of head node to new node */
if (head != null)
head.prev = new_Node;
/* 5. move the head to point to the new node */
head = new_Node;
}
}
【问题讨论】: