c++ - Segmentfault 试图从函数访问结构中的值
问题描述
void remove( const int & info, AvlNode * & node ) {
//current holdes leftmost/rightmost leaf
AvlNode*current = node;
AvlNode*temp = node;
if(current->element == info){
//deleted node is in root
AvlNode*rootreplace = current;
rootreplace = current->right;
while(rootreplace->left != NULL){
rootreplace = rootreplace->left;
}
int c2=rootreplace->element;
cout << c2;
remove(c2,node);
removeleftmost(c2,node);
cout << c2;
//node->element = c2;
root 和 node 是可互换的,因为此节点设置为根节点,这是我要更改的值(元素)。我可以root->element and rootrepalace->element
很好地输出作品,但是当我设置
node->element = rootreplace->element
我得到一个段故障 11. 让我相信这与我如何访问这些节点有关,但我在网上找不到太多信息。
解决方案
错误来自 AvlNode*rootreplace = current;
更改为 AvlNode*rootreplace = node;
修复此问题。
推荐阅读
- javascript - 我如何自定义滚动条
- vba - 可以使用 VBA 代码读取 Windows 事件查看器吗?
- sql - 如果子集之一为真,则检查第二个表中的数据子集,条件为真
- java - 使用 javax.crypto.Cipher 与 java.security.Signature 进行签名
- docker - 在 Windows 容器中使用命名管道(同一主机)
- jenkins - 为什么在开始构建我的目录作业中删除的所有文件后?
- azure - URL Rewrite web.config 在域和页面之间添加假文件夹
- python - 如何在不传递上下文的情况下翻译命令。(不和谐机器人)
- javascript - 在 Vuejs 中从多个组件中收集数据的最佳方法
- r - stepcAIC - eval 中的错误(predvars,data,env):找不到对象“Color1”