DOMANDA Come posso eliminare una serie di nodi in liste concatenate in C ?

  • Autore discussione Autore discussione m3tt0
  • Data d'inizio Data d'inizio
Pubblicità
Ti dico subito, scritto al volo per gioco, solo per darti qualche idea, codice non testato, sono stanco e potrebbe non fiunzionare

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;
    }
   
}
--- i due messaggi sono stati uniti ---
Pui puoi testare la cosa da solo, ritraversando e stampando i valori
 
Ti dico subito, scritto al volo per gioco, solo per darti qualche idea, codice non testato, sono stanco e potrebbe non fiunzionare

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;
    }
  
}
--- i due messaggi sono stati uniti ---
Pui puoi testare la cosa da solo, ritraversando e stampando i valori
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 ?
 
Pubblicità
Pubblicità
Indietro
Top