Negative_creep
19-11-2010, 15:00
Ciao a tutti, vi scrivo per avere un'informazione sugli heap. Avrei bisogno di salvare diversi dati in una struttura che mi consenta di poter costruire un albero binario partendo proprio dallo heap.
Tutti gli esempi che ho trovato usano un vettore "heap ordinato" in cui ogni elemento in posizione a[i]>=a[2i] e a[i]>=a[2i+1] da qui quindi è possibile costruire l'albero binario. Però, se ho bisogno di inserire,togliere elementi dinamicamente, il vettore non va bene come struttura di appoggio per l'heap, oppure mi sbaglio?
Anche se creassi un vettore di interi allocato dinamicamente, supponiamo
int* num=(int*)malloc(300*sizeof(int));
come farei a sapere quanti elementi ho all'interno in ogni momento?
Gli esempi sugli heap che ho trovato,usano un vettore che già contiene tutti gli elementi, e poi si procede quindi all'operazione di spostamento dei dati in modo da poterli ordinare correttamente, ma se io ho bisogno di aggiungere dinamicamente dei dati cosa utilizzo? :help:
Tutti gli esempi che ho trovato usano un vettore "heap ordinato" in cui ogni elemento in posizione a[i]>=a[2i] e a[i]>=a[2i+1] da qui quindi è possibile costruire l'albero binario. Però, se ho bisogno di inserire,togliere elementi dinamicamente, il vettore non va bene come struttura di appoggio per l'heap, oppure mi sbaglio?
Anche se creassi un vettore di interi allocato dinamicamente, supponiamo
int* num=(int*)malloc(300*sizeof(int));
come farei a sapere quanti elementi ho all'interno in ogni momento?
Gli esempi sugli heap che ho trovato,usano un vettore che già contiene tutti gli elementi, e poi si procede quindi all'operazione di spostamento dei dati in modo da poterli ordinare correttamente, ma se io ho bisogno di aggiungere dinamicamente dei dati cosa utilizzo? :help: