void after(Node**previous_node,int n)
{
Node*neww = new Node();
neww->data=n;
neww->next=*previous_node->next;
*previous_node->next=neww;
}
Ponieważ *previous_node
może być nullptr
, czyli nie ma poprzedniego, więc leżysz i kwiczysz.
void after(Node*previous_node,int n)
{
Node*neww = new Node();
neww->data=n;
neww->next=previous_node->next;
previous_node->next=neww;
}
Tutaj też previous_node moze byc nullptr
Czy możesz mi wytłumaczyć czym się różni to "nowe" pytanie od poprzedniego?
MIkiti napisał(a):
Tutaj też previous_node moze byc nullptr
Wiesz co to instrukcja warunkowa? Wykorzystaj ją i sprawdź czy wskaźnik jest pusty.
W pierwszym kodzie skopane są priorytety operatorów.
Więc kod się nie kompiluje.
Sam kod to i to niepełny to źle zadane pytanie. Nawet nie jest pewne czy to jest lista pojedynczo łączona, czy podwójnie.
Jak kodu jest mało i jesteś początkujący, to wklejaj wszystko, bo jeszcze nie masz doświadczenia, by wiedzieć co jest niezbędne i na pewno przegapisz inne problemy.
Poza tym zawsze opisuj co jest problemem.
Jeśli błąd kompilacji to wklej też komunikat błędu.
Jeśli błąd wykonania to opisz w jakim scenariuszu (jakie konieczne są dane wejściowe) i jaki jest objaw.
Linijki nr 5 i 6 powinny wyglądać tak:
neww->next = (*previous_node)->next;
(*previous_node)->next=neww;