Как цикл while, который находится внутри функции сравнения списков, идет бесконечно
проблема в том, что пока цикл не завершается, я не знаю почему
#include <iostream> using namespace std; class linkedList { private: struct node { int data; node *next; }; node *headA; node *headB; public: linkedList(); ~linkedList(); int CompareLists(); void pushA(int m_data); void pushB(int m_data); }; linkedList::linkedList() { headA=NULL; headB=NULL; } linkedList::~linkedList() { delete(headA); delete(headB); } void linkedList::pushA(int m_data) { node *newNode=new node; if(headA==NULL) { headA=newNode; } newNode->data=m_data; newNode->next=headA; headA=newNode; } void linkedList::pushB(int m_data) { node *newNode=new node; if(headB==NULL) { headB=newNode; } newNode->data=m_data; newNode->next=headB; headB=newNode; } int linkedList::CompareLists() { if(headA==NULL || headB==NULL) { return 0; } while(headA!=NULL && headB!=NULL) { if(headA->data!=headB->data) { return 0; } headA=headA->next; headB=headB->next; } if(headA==NULL && headB!=NULL) { return 0; } if(headA!=NULL && headB==NULL) { return 0; } return 1; // This is a "method-only" submission. // You only need to complete this method } int main() { linkedList l; l.pushA(7); l.pushA(9); l.pushA(11); l.pushA(5); l.pushA(3); l.pushA(1); l.pushB(7); l.pushB(9); l.pushB(11); l.pushB(5); l.pushB(3); l.pushB(1); cout<<l.CompareLists(); }
Что я уже пробовал:
Я попытался решить эту проблему с помощью отладчика, но это не помогло
PIEBALDconsult
Я не уверен, но думаю, что у вас есть круговые списки.
Member 13277493
Я так не думаю, я не соединил последний узел с первым узлом, почему он должен быть круглым
PIEBALDconsult
Я могу ошибаться, но перечитайте ваши методы толчка и посмотрите, видите ли вы то, что вижу я.
Member 13277493
о, Спасибо, я забыл написать еще кое-что перед выписками
PIEBALDconsult
Рад быть полезным.
Member 13277493
:)