C++ Segmentfault试图从函数访问结构中的值 void删除(常量int&info、AvlNode*&node){ //当前保持最左/最右叶 AvlNode*当前=节点; AvlNode*temp=节点; 如果(当前->元素==信息){ //已删除的节点位于根目录中 AvlNode*rootreplace=当前; rootreplace=当前->右侧; while(rootreplace->left!=NULL){ rootreplace=rootreplace->left; } int c2=根替换->元素; cout
错误来自C++ Segmentfault试图从函数访问结构中的值 void删除(常量int&info、AvlNode*&node){ //当前保持最左/最右叶 AvlNode*当前=节点; AvlNode*temp=节点; 如果(当前->元素==信息){ //已删除的节点位于根目录中 AvlNode*rootreplace=当前; rootreplace=当前->右侧; while(rootreplace->left!=NULL){ rootreplace=rootreplace->left; } int c2=根替换->元素; cout,c++,function,linked-list,segmentation-fault,nodes,C++,Function,Linked List,Segmentation Fault,Nodes,错误来自AvlNode*rootreplace=current;更改为AvlNode*rootreplace=node;修复了此问题。尝试“cout”指针(而不是指向的对象)node、current和rootreplace,只是为了查看某些指针何时以及为什么变为空。 void remove( const int & info, AvlNode * & node ) { //current holdes leftmost/rightmost leaf AvlNode*cur
AvlNode*rootreplace=current;
更改为AvlNode*rootreplace=node;
修复了此问题。尝试“cout”指针(而不是指向的对象)node
、current
和rootreplace
,只是为了查看某些指针何时以及为什么变为空。
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;