Ciao Oregon, grazie mille per avermi risposto ancora una volta e, ancora una volta, con una certa celerità 
Ho provato a seguire il tuo consiglio:
codice:
//ESTRAZIONE DEL MASSIMO IN UNA CODA A PRIORITA'
void extractMax(Heap *PH){
int max;
if(codaVuota(*PH)){
printf("CODA VUOTA\n");
}
//ESTRAGGO IL MASSIMO, SAPPIAMO CHE IN UN MAXHEAP E' SEMPRE IL PRIMO ELEMENTO
//N.B. NOI RAPPRESENTIAMO L'ALBERO PARTENDO DA 0 E NON DA 1
max = PH->Info[0];
PH->Info[0] = PH->Info[PH->N];
//DECREMENTO IL VETTORE
PH->N--;
//APPLICO LA HEAPIFY SUL PRIMO ELEMENTO, SAPENDO CHE SI RIPERCUOTE SU TUTTI I SOTTOALBERI
Heapify(PH, 0);
}
codice:
//APPLICA LO HEAPIFY ALL'ALBERO BINARIo
void Heapify(Heap *PPH, int i){
int l, r, m, comodo = 0, largest;
l = Left(i);
r = Right(i);
if(PPH->Info[i] > comodo){
largest = i;
comodo = PPH->Info[i];
}
if(PPH->Info[l] > comodo){
largest = l;
comodo = PPH->Info[l];
}
if(PPH->Info[r] > comodo){
largest = r;
comodo = PPH->Info[r];
}
//SE IL VALORE DA SCAMBIARE NON E' IL NODO STESSO, SCAMBIO I VALORI
if(largest != i){
Swap(&PPH->Info[i], &PPH->Info[largest]);
Heapify(PPH, largest);
}
}
codice:
int main(){
--CODE--
ExtractMax(&H);
return 0;
}
Ho provato, inoltre, a lanciare un debug, e vedo che si blocca nel momento in cui esegue lo swap nella funzione Heapify:
codice:
//FUNZIONE SWAP
void Swap(int *a, int *b){
int temp;
temp = *b;
*b = *a;
*a = temp;
}
in particolare nell'istruzione: *b = *a;