view src/main.c @ 0:5db060528d2b

Initial import
author Eris Caffee <discordia@eldalin.com>
date Wed, 29 Dec 2010 02:14:35 -0600
parents
children 112164f48f30
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;
31 int * p_int;
32 mode_info * p_mode;
34 int i;
35 int size;
38 ll_init(&list1);
39 ll_init(&list2);
41 for (i=0; i<10; ++i)
42 {
43 p_int = malloc(sizeof(int));
44 *p_int = i;
45 list1.push(&list1, p_int);
46 }
47 p_int = malloc(sizeof(int));
48 *p_int = 17;
49 list1.push(&list1, p_int);
51 list1.head(&list1);
52 list1.next(&list1);
53 p_int = malloc(sizeof(int));
54 *p_int = 23;
55 list1.insert(&list1, p_int);
57 list1.tail(&list1);
58 p_int = malloc(sizeof(int));
59 *p_int = 109;
60 list1.insert(&list1, p_int);
62 list1.head(&list1);
63 list1.next(&list1);
64 list1.next(&list1);
65 list1.next(&list1);
66 list1.next(&list1);
67 list1.next(&list1);
68 free(list1.remove(&list1));
70 list1.head(&list1);
71 free(list1.remove(&list1));
73 list1.tail(&list1);
74 free(list1.remove(&list1));
76 list1.prev(&list1);
77 list1.prev(&list1);
78 free(list1.remove(&list1));
80 p_int = malloc(sizeof(int));
81 *p_int = 77;
82 list1.insert_at_head(&list1, p_int);
86 p_mode = calloc(1, sizeof(mode_info));
87 p_mode->sizeid = 1;
88 p_mode->w = 640;
89 p_mode->h = 480;
90 p_mode->r = 60;
91 list2.push(&list2, p_mode);
93 p_mode = calloc(1, sizeof(mode_info));
94 p_mode->sizeid = 2;
95 p_mode->w = 800;
96 p_mode->h = 600;
97 p_mode->r = 85;
98 list2.push(&list2, p_mode);
100 p_mode = calloc(1, sizeof(mode_info));
101 p_mode->sizeid = 3;
102 p_mode->w = 1024;
103 p_mode->h = 768;
104 p_mode->r = 72;
105 list2.push(&list2, p_mode);
107 p_mode = calloc(1, sizeof(mode_info));
108 p_mode->sizeid = 4;
109 p_mode->w = 1280;
110 p_mode->h = 1024;
111 p_mode->r = 60;
112 list2.push(&list2, p_mode);
115 printf("list2:\n");
117 list2.head(&list2);
118 size = list2.size(&list2);
119 for (i=0; i<size; ++i)
120 {
121 p_mode = list2.data(&list2);
122 printf("mode %d: %dx%d @ %d MHz\n",
123 p_mode->sizeid, p_mode->w, p_mode->h, p_mode->r);
124 list2.next(&list2);
125 }
126 printf("\n\n");
128 size = list1.size(&list1);
129 printf("List1 has %d elements\n", size);
130 list1.head(&list1);
131 for (i=0; i<size; ++i)
132 {
133 printf("%d ", *((int *) list1.data(&list1)) );
134 fflush(stdout);
135 list1.next(&list1);
136 }
137 printf("\n");
139 for (i=0; i<size; ++i)
140 {
141 p_int = list1.pop(&list1);
142 printf("%d\n", *p_int);
143 free(p_int);
144 }
147 LinkedList * list3;
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");
172 }