#include <heap.h>
Public Member Functions | |
heap (frequenza **pf, int n) | |
il costruttore. | |
void | down (int i) |
funzione che trascina la testa fino alla posizione giusta. | |
frequenza * | estrai () |
funzione per l'estrazione dell'elemento a minore frequenza. | |
int | lastn () |
funzione che restituisce l'ultimo indice dell'heap. | |
void | inserisci (frequenza *f) |
funzione che inserisce un elemento. | |
void | buildheap () |
funzione che trasforma un array in un heap | |
void | up (int i) |
funzione che trascina l'elemento in posizione i nella giusta posizione | |
Protected Attributes | |
frequenza ** | v |
puntatore all'array che costituisce lo heap. | |
int | last |
ultimo indice valido dell'array. |
questa classe mi serve per implementare l'algoritmo di huffman, infatti esso necessita di un vero e proprio heap, siccome ho gia disponibile l'array contenente i nodi (con left e right a null) sia nel comrpessore che nel decompressore posso fare un heap di puntatori a nodo ordinati inversamente (il minimo in testa) secondo la frequenza del caratter nel nodo.
Definition at line 20 of file heap.h.
|
il costruttore. ha come argomento un array di puntatori a frequenza, esso deve già un array a tutti gli effetti quando viene passato al costruttore e questo è vero sia per il compressore, che per il decompressore; non c'è bisogno di distruttore, infatti l'heap viene cancellato direttamente applicando la delete[] sull'argomento attuale di pf, l'array viene trasformato in heap tramite la buildheap(); Complessità: O(n).
Definition at line 12 of file heap.cpp. References buildheap(), last, and v. |
|
funzione che trasforma un array in un heap lavora semplicemente invocando la down sui primi n/2 elementi dove n è l'ultimo indice valido (last); Complessità: O(n).
Definition at line 68 of file heap.cpp. Referenced by heap(). |
|
funzione che trascina la testa fino alla posizione giusta. è necessario applicare la down a seguito di una estrazione, infatti nella estrai viene spostato l'ultimo elemento nell'array in testa, e si rendono necessari degli scambi padre figlio per conservare le proprietà dell'heap; Complessità: O(log n).
Definition at line 19 of file heap.cpp. Referenced by buildheap(), and estrai(). |
|
funzione per l'estrazione dell'elemento a minore frequenza. viene semplicemente estratta la testa, dopo di che si riassesta lo heap, viene utilizzata dalle funzioni huffman() presenti in compressore e decompressore per costruire l'albero delle codifiche; Complessità: O(log n).
Definition at line 37 of file heap.cpp. References down(), last, and v. Referenced by decompressore::huffman(), and compressore::huffman(). |
|
funzione che inserisce un elemento. nell'esecuzione della funzione huffman(), bisogna fare molteplici inserimenti e estrazioni, quindi serve la inserisci, essa funziona inserendo dapprima in fondo all'heap l'elemento, poi invocando la up su questo che, tramite scambi padre-figlio, conserva le proprietà dello heap; Complessità: O(log n).
Definition at line 50 of file heap.cpp. Referenced by decompressore::huffman(), and compressore::huffman(). |
|
funzione che restituisce l'ultimo indice dell'heap. necessaria per conoscere l'ultimo indice dato che l'intero last è privato; Complessità: O(1).
Definition at line 45 of file heap.cpp. References last. Referenced by compressore::compressore(), and decompressore::decompressore(). |
|
funzione che trascina l'elemento in posizione i nella giusta posizione a partire dall'elemento in posizione i vengono effettuati degli scambi figlio-padre fino a che l'elemento non è in una posizione tale da conservare le proprietà dello heap; Complessità: O(log n).
Definition at line 56 of file heap.cpp. References v. Referenced by inserisci(). |
|
puntatore all'array che costituisce lo heap. l'array non viene generato dall'heap ma viene passato al costruttore, all'inizio esso non ha una struttura a heap ma basta chiamare la buildheap() e l'array sarà diventato un heap.
Definition at line 30 of file heap.h. Referenced by compressore::compressore(), decompressore::decompressore(), down(), estrai(), heap(), inserisci(), and up(). |