Я реализовал программу, которая проверяет, существует ли указанное число в связанном списке или нет, но я столкнулся с проблемой во время выполнения; ничего не появляется, когда я ввожу какое-то значение, которого нет в моем списке, мне кажется, что моя программа застряла в бесконечном l oop. Может ли кто-нибудь помочь мне улучшить мой алгоритм? заранее спасибо! Вы можете проверить весь код здесь: https://github.com/mmed17/BinarySearchRecursively
typedef struct list
{
int data;
struct list *next;
}list;
typedef struct info
{
int element;
bool found;
}binary;
list * find_mid(list *head,list *last)
{
list *slow=head;
list *fast=head->next;
if(head==NULL) return NULL;
if(fast==last) return head;
while(fast!=last)
{
fast=fast->next;
if(fast!=last)
{
fast=fast->next;
slow=slow->next;
}
}
return slow;
}
binary * binary_search(list *head,list *last,binary *temp)
{
list *mid=find_mid(head,last);
if(last != head)
{
if(mid->data < temp->element)
head=mid->next;
else if(mid->data > temp->element)
last=mid;
else
{
temp->found=true;
return temp;
}
return binary_search(head,last,temp);
}
return temp;
}