Ho un'implementazione di elenchi concatenati generici con una struttura di nodo contenente un void * ai dati e una struttura di elenchi che contiene un riferimento a capo. Ora ecco il mio problema: un nodo nell'elenco collegato può contenere un riferimento a un altro elenco collegato tramite il suo vuoto *. Ciò causa perdite di memoria quando liberare la lista più grande contenente elenchi più piccoli. Quindi mi chiedo se c'è un modo per verificare se il vuoto * sta puntando su un'altra lista, quindi seguo e libero anche questo o solo dati.Elenco collegato contenente altri elenchi concatenati e gratuito
Se aggiungo una chiave all'inizio della mia struct un numero magico che posso controllare dereferenziando il vuoto * e capirlo è una lista?
MODIFICA: i chiamanti non inseriscono gli elenchi più piccoli inseriti dalle mie funzioni. Non voglio che i chiamanti si occupino di rifasare più elenchi solo quello a cui tengono un puntatore.
Vorrei lasciare all'utente la parte di dati liberi, quindi dovrebbe sapere come 'liberare' i dati puntati da ciascun elemento. Il lavoro dell'elenco collegato consiste semplicemente nel collegare tutti quei puntatori di dati. – Peyman