Interface
#include "Item.h"
void PQinit(int);
int PQempty();
void PQinsert(Item);
Item PQdelmax();
Implementação
Com Amontoado
#include <stdlib.h>
#include "Item.h"
static Item *pq;
static int N;
void PQinit(int maxN) {
pq = malloc((maxN+1)*sizeof(Item)); N = 0;
}
int PQempty() { return N == 0; }
void PQinsert(Item v) { pq[++N] = v; fixUp(pq, N); }
Item PQdelmax() {
exch(pq[1], pq[N]);
fixDown(pq, 1, N-1);
return pq[N--];
}
Com Vector
static Item *pq;
static int N;
void PQinit(int maxN) {
pq = malloc(maxN*sizeof(Item)); N = 0;
}
int PQempty() { return N == 0; }
void PQinsert(Item v) { pq[N++] = v; }
Item PQdelmax() {
int j, max = 0;
for (j = 1; j < N; j++)
if (less(pq[max], pq[j])) max = j;
exch(pq[max], pq[N-1]);
return pq[--N];
}
Cliente