Бинарный поиск в связанном списке (с использованием рекурсии) - PullRequest
0 голосов
/ 02 мая 2020

Я реализовал программу, которая проверяет, существует ли указанное число в связанном списке или нет, но я столкнулся с проблемой во время выполнения; ничего не появляется, когда я ввожу какое-то значение, которого нет в моем списке, мне кажется, что моя программа застряла в бесконечном 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...