int main(int argc, char **argv) { int a[NUM_OF_ELEM + 1]; int data[NUM_OF_ELEM] = { 4, 6, 8, 9, 2, 0, 1, 7, 3, 5 }; int i = 0; printf("init: "); for (i = 0; i < NELEM(a); ++i) { a[i] = DEFAULT_INT; } print_array(a, NELEM(a)); printf("data: "); print_array(data, NELEM(data)); printf("insert: "); for (i = 0; i < NUM_OF_ELEM; ++i) { insert(a, data[i]); } print_array(a, NELEM(a)); for (i = 0; i < NUM_OF_ELEM; ++i) { printf("del_max(%d): ", del_max(a)); print_array(a, NELEM(a)); } return 0; }
struct elem * del_max(struct elem *const e) { struct elem *tmp, *_e; if (!e) return NULL; _e = e; if (e->right) e->right = del_max(e->right); else { if (!(tmp = e->left)) tmp = e, _e = NULL; else *_e = *tmp; /* free(tmp); */ } return post_del(_e); }
void select_smallest_m(int m) { for(int i = 0; i < N; i++) { insert(seq[i]); if(size() > m) del_max(); } for(int i = 1; i <= m; i++) printf("%d ", pq[i]); printf("\n"); }