/*
Here is the piece of code causing segmentation fault
*/
int search_for_data(T_NODE head, int data){
while(head){
if( head->data > data)
head = head->left;
if( head->data < data)
head = head->right;
else
return head->key;
}
return -999999;// in case the node is not found
}
代码似乎是为少数几个值抛出分段错误但对其他人来说效果很好。我尝试搜索22并且存在分段错误。
答案 0 :(得分:2)
else
之前缺少if
:
if( head->data > data)
head = head->left;
else if( head->data < data) /* this line */
head = head->right;
else
return head->key;
使用原始代码,它会评估第一个if
,然后立即评估第二个,但head
可能在第一个NULL
之后变为if
。