view src/dequeue_test.c @ 9:abdba37f67a2

Red-black tree in progress. Linked list needs iterators redone, also in progress. Sleepy.
author Eris Caffee <discordia@eldalin.com>
date Fri, 28 Sep 2012 03:08:25 -0500
parents 392ce56806f9
children 68f85ffc6029
line source
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <errno.h>
5 #include "dequeue.h"
7 #define MAX 10
9 int main(int argc, char**argv)
10 {
11 int i, j;
12 int *ip;
13 struct dequeue * deq;
15 deq = dequeue_new(MAX);
16 if (NULL == deq)
17 {
18 perror("dequeue_new");
19 exit(EXIT_FAILURE);
20 }
22 // Fill the dequeue
23 for (i=0; i < MAX; i++)
24 {
25 ip = malloc(sizeof(int));
26 *ip = i;
27 if (NULL == dequeue_push_top(deq, (void *) ip))
28 perror("dequeue_push");
29 }
31 // remove 5 items
32 printf("dequeue size is %zd\n", dequeue_size(deq));
33 for (j=0; j < 5 && NULL != (ip = dequeue_pop_top(deq)); j++)
34 {
35 printf("%d\n", *ip);
36 free(ip);
37 }
38 printf("dequeue size is %zd\n", dequeue_size(deq));
40 // Overfill the dequeue
41 for (i=MAX; i < 2*MAX; i++)
42 {
43 ip = malloc(sizeof(int));
44 if (NULL == ip)
45 {
46 perror("malloc");
47 exit(EXIT_FAILURE);
48 }
49 *ip = i;
50 errno = 0;
51 if (NULL == dequeue_push_top(deq, (void *) ip))
52 {
53 perror("dequeue_push_top");
54 free(ip);
55 }
56 }
58 // Empty the dequeue
59 printf("dequeue size is %zd\n", dequeue_size(deq));
60 while (NULL != (ip = dequeue_pop_top(deq)))
61 {
62 printf("%d\n", *ip);
63 free(ip);
64 }
65 printf("dequeue size is %zd\n", dequeue_size(deq));
67 // Add 3 to top
68 for (i=0; i < 3; i++)
69 {
70 ip = malloc(sizeof(int));
71 *ip = i;
72 if (NULL == dequeue_push_top(deq, (void *) ip))
73 {
74 perror("dequeue_push");
75 free(ip);
76 }
77 }
78 // Add 3 to bottom
79 for (;i < 6; i++)
80 {
81 ip = malloc(sizeof(int));
82 *ip = i;
83 if (NULL == dequeue_push_bottom(deq, (void *) ip))
84 {
85 perror("dequeue_push");
86 free(ip);
87 }
88 }
89 // empty by alternation
90 printf("dequeue size is %zd\n", dequeue_size(deq));
91 while (0 != dequeue_size(deq))
92 {
93 if ((ip = dequeue_pop_top(deq)))
94 {
95 printf("%d\n", *ip);
96 free(ip);
97 }
98 if ((ip = dequeue_pop_bottom(deq)))
99 {
100 printf("%d\n", *ip);
101 free(ip);
102 }
103 }
104 printf("dequeue size is %zd\n", dequeue_size(deq));
106 dequeue_delete(deq);
108 exit(EXIT_SUCCESS);
109 }