int main(int argc, char *argv[]) { char *dir; struct dirent **nl; long int rnd; int n, i; if (register_signals() < 0){ fprintf(stderr, "e: signals\n"); return EX_USAGE; } if(argc == 2) dir = argv[1]; else return 0; srand(time(NULL)); n = scandir(dir, &nl, 0, alphasort); if (n < 0){ fprintf(stderr, "e: %s\n", strerror(errno)); //goto fnl; return 1; } struct priority_queue *pq; struct dirent *data; pq = create_priority_queue(); for (i=0; i<n; i++){ rnd = rand() % n; insert_with_priority_queue(pq, rnd, nl[i]); } for (i=0; i<n; i++){ if (pull_highest_priority(pq, (void **) &data) == 0){ if (data->d_name[0] != '.') fprintf(stdout, "%s\n", data->d_name); } } while(n--){ if (nl[n]) free(nl[n]); } if (nl) free(nl); destroy_priority_queue(pq, NULL); destroy_shared_mem(); return 0; }
int main(void) { list* l = initialize_list(); list_node* c_node = create_list_node("c"); list_node* a_node = create_list_node("a"); list_node* z_node = create_list_node("z"); list_node* x_node = create_list_node("x"); push_list_node(l, a_node); remove_internal_list_node(l, a_node); push_list_node(l, a_node); push_list(l, "b"); push_list_node(l, c_node); unshift_list_node(l, z_node); unshift_list(l, "y"); unshift_list_node(l, x_node); remove_internal_list_node(l, z_node); remove_internal_list_node(l, a_node); remove_internal_list_node(l, x_node); free_list_node(z_node); free_list_node(a_node); free_list_node(x_node); while(l->length > 0) { printf("%s\n", (char*)pop_list(l)); } unsigned long dl; destroy_list(l, DESTROY_MODE_IGNORE_VALUES, &dl); printf("-------queue test-------------\n"); unsigned long priority; char* id; priority_queue* pq = initialize_priority_queue(); push_priority_queue(pq, 30, "id_1", "value_1"); push_priority_queue(pq, 10, "id_2", "value_2"); push_priority_queue(pq, 10, "id_3", "value_3"); push_priority_queue(pq, 40, "id_4", "value_4"); push_priority_queue(pq, 5, "id_5", "value_5"); push_priority_queue(pq, 30, "id_6", "value_6"); push_priority_queue(pq, 30, "id_7", "value_7"); printf("queue length = %ld\n", pq->length); unsigned long num_destroyed; char* tmp = peek_priority_queue(pq, &priority, &id, 0); printf("first is \"%s\"\n", tmp); set_priority_for_id_in_priority_queue(pq, "id_5", 35); tmp = peek_priority_queue(pq, &priority, &id, 0); printf("first is \"%s\"\n", tmp); set_priority_for_id_in_priority_queue(pq, "id_2", 36); tmp = peek_priority_queue(pq, &priority, &id, 0); printf("first is \"%s\"\n", tmp); /* char** values = (char**)destroy_priority_queue(pq, DESTROY_MODE_RETURN_VALUES, &num_destroyed); int index = 0; for(index = 0; values[index] != NULL; index++) { printf("%s\n", values[index]); } */ while(pq->length > 0) { char* value = (char*)shift_priority_queue(pq, &priority, &id); printf("%s\n", value); free(id); } destroy_priority_queue(pq, DESTROY_MODE_FREE_VALUES, &dl); return 0; }