функция пересечения застревает после выхода - PullRequest
0 голосов
/ 10 марта 2020
void intersectionLists(LinkedList argList) {
    bool common = false;
    ListNode* thisCurrentPointer{headPointer};
    ListNode* argCurrentPointer;
    cout <<"common elements between both lists are:\n";

    while(thisCurrentPointer != nullptr) {

        argCurrentPointer = argList.getHeadReference();
        while(argCurrentPointer != nullptr){

            if(thisCurrentPointer->data == argCurrentPointer->data) {
                cout <<thisCurrentPointer->data;
                common = true;
                break;
            }
            argCurrentPointer = argCurrentPointer->nextPointer;
        }
        thisCurrentPointer = thisCurrentPointer->nextPointer;
    }
    if(!common) {
        cout <<"none\n";
    }
    thisCurrentPointer = nullptr;
    argCurrentPointer = nullptr;
    delete thisCurrentPointer;
    delete argCurrentPointer;
}

Привет всем,

Я делал эту функцию для пересечения в классе connectedList, у которого есть параметр другого объекта connectedList, одна служебная функция, которую я использую в строке 9, - это getHeadReference (), которая просто возвращает адрес, сохраненный в headPointer (я использую эту функцию для того, чтобы argCurrentPointer указывал на заголовок списка, который пришел в параметре).

Во всяком случае ... функция дает совершенно точный вывод какими бы ни были два связанных списка, но элемент управления «застревает» сразу после его выполнения, элемент управления зависает, и возвращается огромное значение мусора, я действительно надеюсь, что все понятно.

У меня есть dry, запустите Код, я не могу найти проблему. Даже в main, когда я вызываю другую функцию после выполнения функции «intersectionLists», вызываемая функция выполняется должным образом без какой-либо задержки, но элемент управления не может выйти из main после всей работы, когда я не вызываю это код пересечения, никаких зависаний или задержек вообще не наблюдается, пожалуйста, помогите. Спасибо.

1 Ответ

0 голосов
/ 10 марта 2020

Я думаю, это потому, что вы обнаруживаете thisCurrentPointer и argCurrentPointer после установки их на ноль. Нет необходимости делать какое-либо удаление после того, как вы не дублируете свои узлы.

...