Czemu nie działa?

0
void after(Node**previous_node,int n)
{
    Node*neww = new Node();
    neww->data=n;
    neww->next=*previous_node->next;
    *previous_node->next=neww;
}
7

Ponieważ *previous_node może być nullptr, czyli nie ma poprzedniego, więc leżysz i kwiczysz.

0
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

1

Czy możesz mi wytłumaczyć czym się różni to "nowe" pytanie od poprzedniego?

2
MIkiti napisał(a):

Tutaj też previous_node moze byc nullptr

Wiesz co to instrukcja warunkowa? Wykorzystaj ją i sprawdź czy wskaźnik jest pusty.

5

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.

0

Linijki nr 5 i 6 powinny wyglądać tak:

neww->next = (*previous_node)->next;
(*previous_node)->next=neww;

1 użytkowników online, w tym zalogowanych: 0, gości: 1