Questa è una domanda di assegnazione a cui sto riscontrando problemi nella formulazione di una risposta.Alberi: elenchi collegati vs matrici (efficienza)
"Supponiamo che un albero può avere fino a k bambini per nodo. Sia v il numero medio di figli per nodo. Per quel valore (s) di y è più efficace (in termini di spazio utilizzato) per memorizzare il nodi figlio in un elenco collegato rispetto allo spazio di archiviazione in un array? Perché? "
Credo di poter rispondere al "perché?" più o meno in inglese semplice - sarà più efficiente usare l'elenco collegato perché piuttosto che avere un sacco di nodi vuoti (cioè indici vuoti nell'array se la tua media è inferiore al massimo) occupando la memoria si assegna solo spazio per un nodo in un elenco collegato quando in realtà stai compilando un valore.
Quindi se hai una media di 6 bambini quando il tuo massimo è 200, l'array creerà lo spazio per tutti i 200 figli di ogni nodo quando viene creato l'albero, ma l'elenco collegato assegnerà solo lo spazio per il nodi come necessario Quindi, con la lista collegata, lo spazio utilizzato sarà approssimativamente (?) Nella media; con l'array, spaziati usati saranno il massimo.
... Non vedo quando sarebbe più efficiente utilizzare l'array. È una domanda trabocchetto? Devo tenere conto del fatto che l'array deve avere un limite sul numero totale di nodi quando viene creato?
Non sono sicuro di cosa intendi per il sovraccarico di un elenco collegato. Stai parlando della memoria necessaria per i riferimenti? –
@dc: Bene, come vengono implementate le liste concatenate? Quanta memoria è necessaria? –