示例#1
0
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);
}
示例#3
0
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"); 
}