Mam pytanie odnośnie kodu, który napisałem i zupełnie przypadkiem spełnił moje oczekiwania. Nie rozumiem jak 2 zaznaczone w kodzie linijki mogą usuwać element listy.
void deleteza(int x)
{
node *pom = head;
node *pom2 = pom -> next;
while (pom -> next != NULL)
{
if (pom -> val == x)
{
pom2 = pom -> next; <------------ ta
pom -> next = pom2 -> next; <------------ ta
}
pom = pom -> next;
pom2 = pom2 -> next;
}
}
Od ifa mniej więcej rozumie to tak. Pom wskazuje na wartość elementu x. Następnie pom2 jest przypisany jako następny element poma, czyli pom ma wskaznik na pom2. Potem następnik poma jest równy następnikowi pom2. Dziwnie, ale działa.