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

m3tt0

Nuovo Utente
112
13
CPU
i5-9400F
Dissipatore
NZXT Kraken M22 120mm
Scheda Madre
ASRock H310CM-HDV
HDD
WDC 1TB & SSD 480GB
RAM
G.Skill F4-2400C17-8GIS DDR4
GPU
NVIDIA GeForce GTX 1660 Super
PSU
Cooler Master MWE 600W
Case
Antec NX210
Net
Fibra/Rame 100 mega

bigendian

Utente Attivo
738
423
OS
Linux
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;
    }
   
}
Post unito automaticamente:

Pui puoi testare la cosa da solo, ritraversando e stampando i valori
 

m3tt0

Nuovo Utente
112
13
CPU
i5-9400F
Dissipatore
NZXT Kraken M22 120mm
Scheda Madre
ASRock H310CM-HDV
HDD
WDC 1TB & SSD 480GB
RAM
G.Skill F4-2400C17-8GIS DDR4
GPU
NVIDIA GeForce GTX 1660 Super
PSU
Cooler Master MWE 600W
Case
Antec NX210
Net
Fibra/Rame 100 mega
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;
    }
  
}
Post unito automaticamente:

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 ?
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!