view src/main.c @ 1:112164f48f30

Cleaned up warnings.
author Eris Caffee <discordia@eldalin.com>
date Wed, 29 Dec 2010 02:44:09 -0600
parents 5db060528d2b
children c6e339846527
line source
1 /*******************************************************************************
2 * LinkedList
3 *
4 * A simple doubly linked list class in C.
5 *
6 *
7 * Test driver for LinkedList
8 *
9 ******************************************************************************/
11 #include "LinkedList.h"
13 #include <stdio.h>
14 #include <stdlib.h>
17 typedef struct mode_info mode_info;
18 struct mode_info
19 {
20 int sizeid;
21 int w;
22 int h;
23 int r;
24 };
26 int main (int argc, char ** argv)
27 {
28 LinkedList list1;
29 LinkedList list2;
30 LinkedList * list3;
32 int * p_int;
33 mode_info * p_mode;
35 int i;
36 int size;
39 ll_init(&list1);
40 ll_init(&list2);
42 for (i=0; i<10; ++i)
43 {
44 p_int = malloc(sizeof(int));
45 *p_int = i;
46 list1.push(&list1, p_int);
47 }
48 p_int = malloc(sizeof(int));
49 *p_int = 17;
50 list1.push(&list1, p_int);
52 list1.head(&list1);
53 list1.next(&list1);
54 p_int = malloc(sizeof(int));
55 *p_int = 23;
56 list1.insert(&list1, p_int);
58 list1.tail(&list1);
59 p_int = malloc(sizeof(int));
60 *p_int = 109;
61 list1.insert(&list1, p_int);
63 list1.head(&list1);
64 list1.next(&list1);
65 list1.next(&list1);
66 list1.next(&list1);
67 list1.next(&list1);
68 list1.next(&list1);
69 free(list1.remove(&list1));
71 list1.head(&list1);
72 free(list1.remove(&list1));
74 list1.tail(&list1);
75 free(list1.remove(&list1));
77 list1.prev(&list1);
78 list1.prev(&list1);
79 free(list1.remove(&list1));
81 p_int = malloc(sizeof(int));
82 *p_int = 77;
83 list1.insert_at_head(&list1, p_int);
87 p_mode = calloc(1, sizeof(mode_info));
88 p_mode->sizeid = 1;
89 p_mode->w = 640;
90 p_mode->h = 480;
91 p_mode->r = 60;
92 list2.push(&list2, p_mode);
94 p_mode = calloc(1, sizeof(mode_info));
95 p_mode->sizeid = 2;
96 p_mode->w = 800;
97 p_mode->h = 600;
98 p_mode->r = 85;
99 list2.push(&list2, p_mode);
101 p_mode = calloc(1, sizeof(mode_info));
102 p_mode->sizeid = 3;
103 p_mode->w = 1024;
104 p_mode->h = 768;
105 p_mode->r = 72;
106 list2.push(&list2, p_mode);
108 p_mode = calloc(1, sizeof(mode_info));
109 p_mode->sizeid = 4;
110 p_mode->w = 1280;
111 p_mode->h = 1024;
112 p_mode->r = 60;
113 list2.push(&list2, p_mode);
116 printf("list2:\n");
118 list2.head(&list2);
119 size = list2.size(&list2);
120 for (i=0; i<size; ++i)
121 {
122 p_mode = list2.data(&list2);
123 printf("mode %d: %dx%d @ %d MHz\n",
124 p_mode->sizeid, p_mode->w, p_mode->h, p_mode->r);
125 list2.next(&list2);
126 }
127 printf("\n\n");
129 size = list1.size(&list1);
130 printf("List1 has %d elements\n", size);
131 list1.head(&list1);
132 for (i=0; i<size; ++i)
133 {
134 printf("%d ", *((int *) list1.data(&list1)) );
135 fflush(stdout);
136 list1.next(&list1);
137 }
138 printf("\n");
140 for (i=0; i<size; ++i)
141 {
142 p_int = list1.pop(&list1);
143 printf("%d\n", *p_int);
144 free(p_int);
145 }
148 list3 = malloc(sizeof(LinkedList));
149 if (!list3)
150 {
151 printf("malloc failed!\n");
152 exit(1);
153 }
155 p_int = malloc(sizeof(int));
156 *p_int = 21;
157 ll_push(list3, p_int);
158 p_int = malloc(sizeof(int));
159 *p_int = 22;
160 ll_push(list3, p_int);
161 p_int = malloc(sizeof(int));
162 *p_int = 23;
163 ll_push(list3, p_int);
165 printf("\n\nlist3: ");
166 for (i=0, size=ll_size(list3); i<size; ++i)
167 {
168 p_int = (int *) ll_pop(list3);
169 printf("%d ", *p_int);
170 }
171 printf("\n");
173 return 0;
174 }