Ниже приведен код, который я сделал для обнаружения цикла в списке ссылок? - PullRequest
0 голосов
/ 23 февраля 2020

, где я использовал два счетчика, один счетчик - то, где указатель головы достиг до сих пор, а другой счетчик переходит от начала к одной позиции меньше, чем позиция, где присутствует головка, чтобы найти аналогичный узел, но этот код не работает, почему?

bool has_cycle(Node* head) {
    // Complete this function
    // Do not write the main method
    int i=0,j=0;
    struct Node* temp=head;
    while(head!=NULL){
        i=0;
        while(i<j){
            if(temp==head){
                return true;
            }
            temp=temp->next;
            i++;
        }
        j++;
        head=head->next;
    }
    return false;
}

1 Ответ

1 голос
/ 23 февраля 2020

После получения помощи от Дэвида C. Ответ Ранкина Я сделал следующий код, и он хорошо работает.

bool has_cycle(Node* head) {
    // Complete this function
    // Do not write the main method
    int i=0,j=0;
    struct Node* temp=head;
    struct Node* temp1=head;
    while(head!=NULL){
        i=0;
        while(i<j){
            if(temp==head){
                return true;
            }
            temp=temp->next;
            i++;
        }
        temp=temp1;
        j++;
        head=head->next;
    }
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...