view src/dequeue_test.c @ 1:392ce56806f9

Added dequeue, cmake file, fix copypasta in queue
author Eris Caffee <discordia@eldalin.com>
date Thu, 20 Sep 2012 23:11:40 -0500
parents
children abdba37f67a2
line source
1 #include <stdio.h>
2 #include <stdlib.h>
4 #include "dequeue.h"
6 #define MAX 10
8 int main(int argc, char**argv)
9 {
10 int i, j;
11 int *ip;
12 struct dequeue * deq;
14 deq = dequeue_new(MAX);
15 if (NULL == deq)
16 {
17 perror("dequeue_new");
18 exit(EXIT_FAILURE);
19 }
21 // Fill the dequeue
22 for (i=0; i < MAX; i++)
23 {
24 ip = malloc(sizeof(int));
25 *ip = i;
26 if (NULL == dequeue_push_top(deq, (void *) ip))
27 perror("dequeue_push");
28 }
30 // remove 5 items
31 printf("dequeue size is %zd\n", dequeue_size(deq));
32 for (j=0; j < 5 && NULL != (ip = dequeue_pop_top(deq)); j++)
33 {
34 printf("%d\n", *ip);
35 free(ip);
36 }
37 printf("dequeue size is %zd\n", dequeue_size(deq));
39 // Overfill the dequeue
40 for (i=MAX; i < 2*MAX; i++)
41 {
42 ip = malloc(sizeof(int));
43 *ip = i;
44 if (NULL == dequeue_push_top(deq, (void *) ip))
45 {
46 perror("dequeue_push");
47 free(ip);
48 }
49 }
51 // Empty the dequeue
52 printf("dequeue size is %zd\n", dequeue_size(deq));
53 while (NULL != (ip = dequeue_pop_top(deq)))
54 {
55 printf("%d\n", *ip);
56 free(ip);
57 }
58 printf("dequeue size is %zd\n", dequeue_size(deq));
60 // Add 3 to top
61 for (i=0; i < 3; i++)
62 {
63 ip = malloc(sizeof(int));
64 *ip = i;
65 if (NULL == dequeue_push_top(deq, (void *) ip))
66 {
67 perror("dequeue_push");
68 free(ip);
69 }
70 }
71 // Add 3 to bottom
72 for (;i < 6; i++)
73 {
74 ip = malloc(sizeof(int));
75 *ip = i;
76 if (NULL == dequeue_push_bottom(deq, (void *) ip))
77 {
78 perror("dequeue_push");
79 free(ip);
80 }
81 }
82 // empty by alternation
83 printf("dequeue size is %zd\n", dequeue_size(deq));
84 while (0 != dequeue_size(deq))
85 {
86 if ((ip = dequeue_pop_top(deq)))
87 {
88 printf("%d\n", *ip);
89 free(ip);
90 }
91 if ((ip = dequeue_pop_bottom(deq)))
92 {
93 printf("%d\n", *ip);
94 free(ip);
95 }
96 }
97 printf("dequeue size is %zd\n", dequeue_size(deq));
99 dequeue_delete(deq);
101 exit(EXIT_SUCCESS);
102 }