diff options
| author | Tyge Løvset <[email protected]> | 2020-09-02 20:56:22 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2020-09-02 20:56:22 +0200 |
| commit | 7fd50323b46599090d5cd9ade43a7cdb69c1e145 (patch) | |
| tree | ad8db17822f117499356b374edc02a8db239acc3 /examples | |
| parent | af12926547b1a09b4513ba149d13ea9f84d4c528 (diff) | |
| download | STC-modified-7fd50323b46599090d5cd9ade43a7cdb69c1e145.tar.gz STC-modified-7fd50323b46599090d5cd9ade43a7cdb69c1e145.zip | |
Added cqueue.h, cstack.h and renamed cpqueue.h to cprique.h
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/geek7.c | 14 | ||||
| -rw-r--r-- | examples/heap.c | 18 | ||||
| -rw-r--r-- | examples/inits.c | 14 | ||||
| -rw-r--r-- | examples/priority.c | 18 | ||||
| -rw-r--r-- | examples/queue.c | 31 |
5 files changed, 63 insertions, 32 deletions
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 <stc/clist.h>
#include <stc/cmap.h>
#include <stc/cvec.h>
-#include <stc/cpqueue.h>
+#include <stc/cprique.h>
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 <time.h>
#include <stc/crandom.h>
#include <stc/cvec.h>
-#include <stc/cpqueue.h>
+#include <stc/cprique.h>
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<N; ++i)
cvec_f_push_back(&pq, crand_i32(&pcg));
- cpqueue_f_build(&pq);
+ cprique_f_build(&pq);
printf("Built priority queue: %f secs\n", (clock() - start) / (float) CLOCKS_PER_SEC);
for (int i=0; i<M; ++i)
- printf("%.0f ", *cpqueue_f_top(&pq)), cpqueue_f_pop(&pq);
+ printf("%.0f ", *cprique_f_top(&pq)), cprique_f_pop(&pq);
start = clock();
for (int i=M; i<N; ++i)
- cpqueue_f_pop(&pq);
+ cprique_f_pop(&pq);
printf("\n\npopped PQ: %f secs\n", (clock() - start) / (float) CLOCKS_PER_SEC);
pcg = crand_rng32_init(seed);
start = clock();
for (int i=0; i<N; ++i)
- cpqueue_f_push(&pq, crand_i32(&pcg));
+ cprique_f_push(&pq, crand_i32(&pcg));
printf("pushed PQ: %f secs\n", (clock() - start) / (float) CLOCKS_PER_SEC);
for (int i=0; i<M; ++i)
- printf("%.0f ", *cpqueue_f_top(&pq)), cpqueue_f_pop(&pq);
+ printf("%.0f ", *cprique_f_top(&pq)), cprique_f_pop(&pq);
puts("");
- cpqueue_f_destroy(&pq);
+ cprique_f_destroy(&pq);
}
diff --git a/examples/inits.c b/examples/inits.c index d7b7a37b..dada8fac 100644 --- a/examples/inits.c +++ b/examples/inits.c @@ -2,7 +2,7 @@ #include <stc/cstr.h>
#include <stc/cmap.h>
#include <stc/cvec.h>
-#include <stc/cpqueue.h>
+#include <stc/cprique.h>
#include <stc/clist.h>
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 <stdio.h>
#include <time.h>
#include <stc/cvec.h>
-#include <stc/cpqueue.h>
+#include <stc/cprique.h>
#include <stc/cmap.h>
#include <stc/crandom.h>
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<N; ++i)
- cpqueue_i_push(&heap, crand_uniform_i64(&dist));
+ cprique_i_push(&heap, crand_uniform_i64(&dist));
// push some negative numbers too.
- c_push(&heap, cpqueue_i, c_items(-231, -32, -873, -4, -343));
+ c_push(&heap, cprique_i, c_items(-231, -32, -873, -4, -343));
for (int i=0; i<N; ++i)
- cpqueue_i_push(&heap, crand_uniform_i64(&dist));
+ cprique_i_push(&heap, crand_uniform_i64(&dist));
// Extract the hundred smallest.
for (int i=0; i<100; ++i) {
- printf("%zd ", *cpqueue_i_top(&heap));
- cpqueue_i_pop(&heap);
+ printf("%zd ", *cprique_i_top(&heap));
+ cprique_i_pop(&heap);
}
- cpqueue_i_destroy(&heap);
+ cprique_i_destroy(&heap);
}
diff --git a/examples/queue.c b/examples/queue.c new file mode 100644 index 00000000..fa8700fe --- /dev/null +++ b/examples/queue.c @@ -0,0 +1,31 @@ +#include <stc/crandom.h>
+#include <stc/cqueue.h>
+#include <stdio.h>
+
+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; i<n; ++i)
+ cqueue_i_push(&queue, crand_uniform_i32(&dist));
+
+ // Push or pop on the queue ten million times
+ printf("%d\n", n);
+ for (int i=n; i>0; --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);
+}
|
