使用c++引用参数在链表中分配新节点
Allocating new node in Linked List using C++ reference parameters
此代码片段适用于在开始时创建新节点。
void push(node **head_ref,int n_data){
node *new_node= new(node);
new_node->data=n_data;
new_node->next=(*head_ref);
*head_ref=new_node;
}
int main(){
node *head=NULL;
push(&head,data);
return 0;
}
这是无效的,但为什么?我想做的是创建一个引用参数,正如Herbert Schildt所提到的。
void push(node &(*head_ref),int n_data){
node *new_node= new(node);
new_node->data=n_data;
new_node->next=head_ref;
head_ref=new_node;
}
int main(){
node *head=NULL;
push(head,data);
return 0;
}
声明node &(*head_ref)
使head_ref
成为指向引用的指针,而不是指向指针的引用,指针是node*& head_ref
。
空指针不能是引用!因此,在c++中,唯一的方法就是使用双指针。
使用对空指针的引用可能导致未定义的行为,这意味着您应该避免这种情况。
也许boost::optional是你需要的,但是你需要做一些修改。
但是为什么不直接使用std::列表呢?
相关文章:
- 节点 *temp; 和节点 *tmp = 新节点之间的差异
- 为什么我的节点在我设置后被设置为 nullptr = 新节点?
- 指向二叉树中新节点的指针
- 如果我们不创建一个新节点并使用指针插入数据并建立链接(在链表中)怎么办?
- C++ 如何使用动态计算的新节点实现 A*?
- 如何在使用 ItemType 的模板类时将新节点插入二叉树 c++.(我是 c++ 的新手)
- 为什么我的类节点覆盖自身而不是创建新的节点对象
- 在不创建新节点的情况下实现带有映射的trie
- C++/RapidXML:编辑节点并写入新的 XML 文件没有更新的节点
- 在 Omnet++ 中的模拟时间内更改/设置节点的新位置
- 删除节点并处理新的 nullptr 和链接节点
- 将节点添加到链接列表中,而无需明确分配内存空间(无需使用新)
- 添加新节点后,链接列表的负责人总是无效
- 推送功能(将新节点添加到列表顶部)C
- 是否可以将新的列表节点分配给链表的现有节点
- 二叉树不接受新节点
- 使用括号会在声明新节点时会产生错误
- C++链表将新节点添加到列表的开头
- C++为什么创建一个新节点来删除堆栈上的节点是错误的
- 对象中的对象从c++返回到节点(节点插件)