Anonimo
Anonimo ha chiesto in Computer e InternetComputer - Altro · 1 mese fa

Ma l'Heap è una fottuta Struttura Dati o non lo è?

Aggiornamento:

Quando parlo di Heap intendo l'area di memoria. Quella dinamica.

5 risposte

Classificazione
  • Anonimo
    1 mese fa
    Migliore risposta

    è un semplice spazio, se ci vuoi mettere una struttura di dati devi prima definirla e poi popolarla di dati.

    • Accedi per rispondere alle risposte
  • Anonimo
    1 mese fa

    L'heap è il fratello scapestrato dello stack. All'ordine del secondo, corrisponde il disordine dell'altro. L'heap è anche il luogo dove puoi "malloc"are strutture, array, stringhe, temporanee. In italiano "heap" significa "mucchio" ed è proprio il posto dove puoi ammucchiare, disordinatamente, variabili di tipo e dimensioni diverse.

    • Accedi per rispondere alle risposte
  • 1 mese fa

    Per Heap si può intendere la struttura dati basata sugli alberi, oppure l'area di memoria "disordinata" riservata a un programma.

    • Accedi per rispondere alle risposte
  • 1 mese fa

    Certo che è una struttura dati

    • Accedi per rispondere alle risposte
  • Che ne pensi delle risposte? Puoi accedere per votare la risposta.
  • KONAN
    Lv 4
    1 mese fa

    In informatica, un heap (lett. "mucchio") è una struttura dati basata sugli alberi che soddisfa la "proprietà di heap": se A è un genitore di B, allora la chiave di A è ordinata rispetto alla chiave di B conformemente alla relazione d'ordine applicata all'intero heap. Di conseguenza, gli heap possono essere suddivisi in "max heap" e "min heap". In un max heap, le chiavi di ciascun nodo sono sempre maggiori o uguali di quelle dei figli, e la chiave dal valore massimo appartiene alla radice. In un min heap, le chiavi di ciascun nodo sono sempre minori o uguali di quelle dei figli, e la chiave dal valore minimo appartiene alla radice.

    Quindi, dato un heap v ed un indice di posizione j, v si dice

    min-heap: se {v[Padre(j)]<v[j], per ogni j}{v[Padre(j)]<v[j],per ogni j}

    max-heap: se {v[Padre(j)]>v[j], j}{ v[Padre(j)]>v[j], j}

    In questo modo si garantisce che compiendo un qualsiasi percorso che parte da un nodo dell'albero e scendendo nella struttura verso le foglie, si attraversano nodi con chiave sempre maggiore della l'ultima foglia visitata. La scelta di utilizzare un tipo di heap anziché l'altro è data dal tipo di impiego che se ne vuole fare. Da notare che, come si vede nel grafo a fianco, non è implicato alcun ordine specifico tra nodi fratelli o cugini, ovvero, i nodi non sono ordinati trasversalmente (come invece accade, ad esempio, nell'albero binario di ricerca).

    Gli heap sono essenziali negli algoritmi della teoria dei grafi (come l'algoritmo di Dijkstra) o negli algoritmi di ordinamento come l'heapsort. Un'implementazione molto comune di un heap è l'heap binario, basato su un albero binario completo.

    • Accedi per rispondere alle risposte
Altre domande? Fai una domanda e ottieni le risposte che cerchi.