36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
#include "runner.h"
|
|
|
|
#include "heap.h"
|
|
|
|
static bool heap_test_0(const char ** scenario)
|
|
{
|
|
*scenario = "heap_extract_max";
|
|
|
|
struct heap_entry e[100];
|
|
int heap_length = 0;
|
|
int n[] = {-17, -57, -84, -88, -44, -77, -13, -80, -51, -37, -54, -74, -51, -74, -69, -15, -53, -74, -48, -93, -18, -14, -97, -35, -72, -73, -85, -42, -9, -53, -47, -93, -63, -81, -41, -48, -52, -67, -58, -24, -70, -4, -9, -67, -29, -54, -26, -35, -23, -96, -83, -68, -88, -73, -70, -71, -41, -78, -91, -96, -6, -33, -15, -56, -95, -62, -62, -88, -37, -96, -86, -53, -82, -84, -73, -25, -94, -1, -9, -80, -99, -35, -81, -51, -19, -64, -6, -88, -94, -30, -3, -88, -63, -43, -40, -86, -48, -66, -16, -21};
|
|
for (int i = 0; i < 100; i++) {
|
|
heap_append(e, &heap_length, n[i], 0);
|
|
}
|
|
|
|
int max = 999;
|
|
while (heap_length > 0) {
|
|
struct heap_entry ei = heap_extract_max(e, &heap_length);
|
|
printf("%d %d\n", ei.key, max);
|
|
if (ei.key > max)
|
|
return false;
|
|
max = ei.key;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
test_t heap_tests[] = {
|
|
heap_test_0,
|
|
};
|
|
|
|
RUNNER(heap_tests)
|