m3tt0
Nuovo Utente
- Messaggi
- 112
- Reazioni
- 13
- Punteggio
- 45
ed allora non capisco come posso eliminare un singolo nodo dalla lista con una funzione.il free si fa dopo averlo eliminato "logicamente" dalla lista
Segui il video qui sotto per vedere come installare il nostro sito come web app sulla tua schermata principale.
Nota: Questa funzionalità potrebbe non essere disponibile in alcuni browser.
Pubblicità
ed allora non capisco come posso eliminare un singolo nodo dalla lista con una funzione.il free si fa dopo averlo eliminato "logicamente" dalla lista
static node *prev;
node * delete_node(node *cur)
{
node *ret;
if (cur->next) {
ret = cur->next;
if (prev) {
prev->next = cur;
} else {
head = ret;
}
free(cur);
}
return ret;
}
int main()
{
node *cur;
add_node(x, y);
add_node(x, y);
add_node(x, y);
add_node(x, y);
cur = head;
for (;;) {
if (cur->a > 100) {
cur = delete_node(cur);
}
prev = cur;
if (cur->next)
cur = cur->next;
}
}
tranquillo, non esigo nulla a quest'ora, anzi già è tanto che mi stai rispondendo, tranquillo, sto provando ad implementare, solo non capisco cosa sarebbe quel nodo prev? il precedente ?Ti dico subito, scritto al volo per gioco, solo per darti qualche idea, codice non testato, sono stanco e potrebbe non fiunzionare
--- i due messaggi sono stati uniti ---Codice:static node *prev; node * delete_node(node *cur) { node *ret; if (cur->next) { ret = cur->next; if (prev) { prev->next = cur; } else { head = ret; } free(cur); } return ret; } int main() { node *cur; add_node(x, y); add_node(x, y); add_node(x, y); add_node(x, y); cur = head; for (;;) { if (cur->a > 100) { cur = delete_node(cur); } prev = cur; if (cur->next) cur = cur->next; } }
Pui puoi testare la cosa da solo, ritraversando e stampando i valori