2017-02-15 14 views
0
/* 
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, и произошла ошибка сегментации.Ошибка сегментации в дереве двоичного поиска

ответ

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.

+0

Thanx много !! Это было действительно полезно! –

 Смежные вопросы

  • Нет связанных вопросов^_^