struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
bool hasCycle(ListNode *head) {
if(head == NULL) return false;
ListNode* walker = head;
ListNode* runner = head;
while(runner->next != NULL && walker->next != NULL){
walker = walker->next;
runner = runner->next->next;
if(walker == runner) return true;
}
return false;
}
};
Je pratiquais un code d'interview qui semblait assez simple. Je dois retourner un bool qui détermine si oui ou non la liste à liaison unique a un cycle. J'ai fait deux pointeurs marcheur qui se déplacent de 1 pas et coureur qui se déplace de 2 pas à chaque itération.
Mais alors ce code m'a donné une erreur:
Line 15: member access within null pointer of type 'struct ListNode'
Qu'est-ce qui cause cette erreur?
Vous vous assurez seulement que runner->next
n'est pas nul, cependant après affectation
runner = runner->next->next;
runner
peut devenir nul.