C++链表:节点创建函数
Posted
技术标签:
【中文标题】C++链表:节点创建函数【英文标题】:C++ Linked List: Node Creation Function 【发布时间】:2020-10-26 15:07:36 【问题描述】:所以,我正在学习 C++ 和数据结构。我想做的第一个是单链表。我创建/复制了以下代码:
class Node
public:
int data;
Node* next;
;
Node* head = NULL;
void createnode(int* value)
Node* new_node = new Node(); //allocate memory size of node
new_node->data = *value; //data is given
new_node->next = head; //*next pointer is to head
head = new_node;
void printlist(Node* n)
while (n != NULL)
cout << n->data << "\n";
n = n->next;
我正在努力想象这两行:
new_node->next = head; //*next pointer is to head
head = new_node;
新节点中的“下一个”节点指针被设置为链表的“头”,这很好(我正在可视化插入“头”左侧的节点并将所有内容移动到权利,包括这个“头”对象)。然后,在下一行中,head 被设置为 'new_node'。
所以,它创建了某种循环连接?如果这个链表的“头”不作为一种蛇的头,在后面加上值,增加蛇的长度,如果你愿意的话。
【问题讨论】:
那么,它创建了某种循环连接? 不,您只是在前面而不是在末尾添加节点。 我想做的第一个是单链表。我创建/复制了以下代码 运气不好。这不是我所说的惯用 C++ 代码...new_node->next = head;
new_node
的 next
指针设置为存储在 head
中的指针。现在,new_node->next
(和head
)指向列表的当前第一个节点。 head = new_node;
现在,head
被覆盖以指向新节点。节点指针中没有循环。从现在开始,新节点将成为您列表的首位。
要掌握指针(和列表)的魔力,请尝试在纸上(用铅笔和橡皮擦),其中节点是框,指针是箭头。这是老式的,但不知何故仍然有效...... ;-)
head
不是对象,head
是指向对象的指针。并且可以设置为指向另一个对象。
【参考方案1】:
假设你有一个序列:
a -> b -> c -> NULL; // where head points to a
这些行的作用是(假设您想将 'd' 添加到上一个列表中):
d -> a; // where a still points to wherever it used to point
然后更新到 HEAD 应该指向的位置,该节点不再是具有 a 的节点,而是具有 d
的节点【讨论】:
以上是关于C++链表:节点创建函数的主要内容,如果未能解决你的问题,请参考以下文章