首页 > 解决方案 > 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. 让我相信这与我如何访问这些节点有关,但我在网上找不到太多信息。

标签: c++functionlinked-listsegmentation-faultnodes

解决方案


错误来自 AvlNode*rootreplace = current;更改为 AvlNode*rootreplace = node;修复此问题。


推荐阅读