From 7fd50323b46599090d5cd9ade43a7cdb69c1e145 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Wed, 2 Sep 2020 20:56:22 +0200 Subject: Added cqueue.h, cstack.h and renamed cpqueue.h to cprique.h --- examples/geek7.c | 14 +++++++------- examples/heap.c | 18 +++++++++--------- examples/inits.c | 14 +++++++------- examples/priority.c | 18 +++++++++--------- examples/queue.c | 31 +++++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 examples/queue.c (limited to 'examples') diff --git a/examples/geek7.c b/examples/geek7.c index 9004a1a8..c686b014 100644 --- a/examples/geek7.c +++ b/examples/geek7.c @@ -25,11 +25,11 @@ After inserting all the elements excluding the ones which are to be deleted, Pop #include #include #include -#include +#include declare_cmap(ii, int, int); declare_cvec(i, int); -declare_cpqueue(i, cvec_i, >); +declare_cprique(i, cvec_i, >); // Find k minimum element from arr[0..m-1] after deleting // elements from del[0..n-1] @@ -44,7 +44,7 @@ void findElementsAfterDel(int arr[], int m, int del[], cmap_ii_insert(&mp, del[i], 0)->value++; } - cpqueue_i heap = cpqueue_i_init(); + cprique_i heap = cprique_i_init(); for (int i = 0; i < m; ++i) { @@ -63,17 +63,17 @@ void findElementsAfterDel(int arr[], int m, int del[], // Else push it in the min heap else - cpqueue_i_push(&heap, arr[i]); + cprique_i_push(&heap, arr[i]); } // Print top k elements in the min heap for (int i = 0; i < k; ++i) { - printf("%d ", *cpqueue_i_top(&heap)); + printf("%d ", *cprique_i_top(&heap)); // Pop the top element - cpqueue_i_pop(&heap); + cprique_i_pop(&heap); } - cpqueue_i_destroy(&heap); + cprique_i_destroy(&heap); } int main() diff --git a/examples/heap.c b/examples/heap.c index 5917dd30..fbcef0cd 100644 --- a/examples/heap.c +++ b/examples/heap.c @@ -2,10 +2,10 @@ #include #include #include -#include +#include declare_cvec(f, float); -declare_cpqueue(f, cvec_f, >); +declare_cprique(f, cvec_f, >); int main() { @@ -13,33 +13,33 @@ int main() crand_rng32_t pcg; int N = 3000000, M = 100; - cpqueue_f pq = cpqueue_f_init(); + cprique_f pq = cprique_f_init(); pcg = crand_rng32_init(seed); clock_t start = clock(); for (int i=0; i #include #include -#include +#include #include declare_cmap(id, int, cstr_t, cstr_destroy); // Map of int -> cstr_t @@ -17,7 +17,7 @@ declare_cvec(ip, ipair_t, c_default_destroy, ipair_compare); declare_clist(ip, ipair_t, c_default_destroy, ipair_compare); declare_cvec(f, float); -declare_cpqueue(f, cvec_f, >); +declare_cprique(f, cvec_f, >); int main(void) { @@ -31,16 +31,16 @@ int main(void) { // CVEC PRIORITY QUEUE - cpqueue_f_build(&floats); // reorganise vec - c_push(&floats, cpqueue_f, c_items(40.0f, 20.0f, 50.0f, 30.0f, 10.0f)); + cprique_f_build(&floats); // reorganise vec + c_push(&floats, cprique_f, c_items(40.0f, 20.0f, 50.0f, 30.0f, 10.0f)); // sorted: while (cvec_size(floats) > 0) { - printf("%.1f ", *cpqueue_f_top(&floats)); - cpqueue_f_pop(&floats); + printf("%.1f ", *cprique_f_top(&floats)); + cprique_f_pop(&floats); } puts("\n"); - cpqueue_f_destroy(&floats); + cprique_f_destroy(&floats); // CMAP ID diff --git a/examples/priority.c b/examples/priority.c index 82e78621..fc0526bf 100644 --- a/examples/priority.c +++ b/examples/priority.c @@ -2,34 +2,34 @@ #include #include #include -#include +#include #include #include declare_cvec(i, int64_t); -declare_cpqueue(i, cvec_i, >); // min-heap (increasing values) +declare_cprique(i, cvec_i, >); // min-heap (increasing values) int main() { size_t N = 10000000; crand_rng64_t pcg = crand_rng64_init(time(NULL)); crand_uniform_i64_t dist = crand_uniform_i64_init(pcg, 0, N * 10); - cpqueue_i heap = cpqueue_i_init(); + cprique_i heap = cprique_i_init(); // Push ten million random numbers to priority queue for (int i=0; i +#include +#include + +declare_clist(i, int); +declare_cqueue(i, clist_i); // min-heap (increasing values) + +int main() { + int n = 10000000; + crand_rng32_t gen = crand_rng32_init(1234); + crand_uniform_i32_t dist = crand_uniform_i32_init(gen, 0, n); + + cqueue_i queue = cqueue_i_init(); + + // Push ten million random numbers onto the queue. + for (int i=0; i0; --i) { + int r = crand_uniform_i32(&dist); + if (r & 1) + ++n, cqueue_i_push(&queue, r); + else + --n, cqueue_i_pop(&queue); + } + printf("%d\n", n); + printf("%zu\n", n, cqueue_i_size(queue)); + cqueue_i_destroy(&queue); +} -- cgit v1.2.3