我真的很困惑这里到底发生了什么......
我有这个功能
void addToFront(int data)
{
Node* tmp = new Node();
tmp -> data = data;
tmp -> next = head;
head = tmp;
}
Run Code Online (Sandbox Code Playgroud)
因此,当我们执行该行时tmp-> next = head,我们使tmp指针指向head指向的内容(列表的当前第一个元素)?因为这就是它的感觉,但是这不仅仅是指向它head吗?然后当我们这样做时head = tmp,我们正在指向我们创建的新节点,对吗?
Sad*_*que 13
这就是你的清单(假设)
+----+-----+ +-----+-----+ +-----+------+
| A | +-->| | +-->| | |
+----+-----+ +-----+-----+ +-----+------+
/
Run Code Online (Sandbox Code Playgroud)
Head指向位置A.
您创建一个新节点
+----+----+
| B | |
+----+----+
/
Run Code Online (Sandbox Code Playgroud)
tmp现在指向B.您插入数据tmp->data,然后生成tmp -> next = head;.所以现在我们有:
+----+----+ +----+-----+ +-----+-----+ +-----+------+
| B |next|---->| A | +-->| | +-->| | |
+----+----+ +----+-----+ +-----+-----+ +-----+------+
/
Run Code Online (Sandbox Code Playgroud)
然后你head指出B而不是A.
+----+----+ +----+-----+ +-----+-----+ +-----+------+
| B |next|---->| A | +-->| | +-->| | |
+----+----+ +----+-----+ +-----+-----+ +-----+------+
/ \
Run Code Online (Sandbox Code Playgroud)
head并tmp指向B现在.