aboutsummaryrefslogtreecommitdiff
path: root/dlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'dlist.c')
-rw-r--r--dlist.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/dlist.c b/dlist.c
index 32258e8..bb0ead9 100644
--- a/dlist.c
+++ b/dlist.c
@@ -10,6 +10,7 @@
10/* Project */ 10/* Project */
11#include "util.h" 11#include "util.h"
12 12
13/* --8<-- dlist_type */
13typedef int T; 14typedef int T;
14 15
15struct dlist { 16struct dlist {
@@ -20,20 +21,26 @@ struct dlist_element {
20 struct dlist_element *prev, *next; 21 struct dlist_element *prev, *next;
21 T data; 22 T data;
22}; 23};
24/* -->8-- */
23 25
26/* --8<-- dlist_init */
24void 27void
25dlist_init(struct dlist *dlist) 28dlist_init(struct dlist *dlist)
26{ 29{
27 dlist->head = NULL; 30 dlist->head = NULL;
28 dlist->tail = NULL; 31 dlist->tail = NULL;
29} 32}
33/* -->8-- */
30 34
35/* --8<-- dlist_empty */
31bool 36bool
32dlist_empty(struct dlist *dlist) 37dlist_empty(struct dlist *dlist)
33{ 38{
34 return dlist->head == NULL; 39 return dlist->head == NULL;
35} 40}
41/* -->8-- */
36 42
43/* --8<-- dlist_create_element */
37static struct dlist_element * 44static struct dlist_element *
38create_element(T data) 45create_element(T data)
39{ 46{
@@ -46,7 +53,9 @@ create_element(T data)
46 53
47 return element; 54 return element;
48} 55}
56/* -->8-- */
49 57
58/* --8<-- dlist_push_front */
50struct dlist_element * 59struct dlist_element *
51dlist_push_front(struct dlist *dlist, T data) 60dlist_push_front(struct dlist *dlist, T data)
52{ 61{
@@ -72,7 +81,9 @@ dlist_push_front(struct dlist *dlist, T data)
72 81
73 return element; 82 return element;
74} 83}
84/* -->8-- */
75 85
86/* --8<-- dlist_push_back */
76struct dlist_element * 87struct dlist_element *
77dlist_push_back(struct dlist *dlist, T data) 88dlist_push_back(struct dlist *dlist, T data)
78{ 89{
@@ -98,7 +109,9 @@ dlist_push_back(struct dlist *dlist, T data)
98 109
99 return element; 110 return element;
100} 111}
112/* -->8-- */
101 113
114/* --8<-- dlist_pop_front */
102bool 115bool
103dlist_pop_front(struct dlist *dlist, T *data) 116dlist_pop_front(struct dlist *dlist, T *data)
104{ 117{
@@ -122,7 +135,9 @@ dlist_pop_front(struct dlist *dlist, T *data)
122 else 135 else
123 return false; 136 return false;
124} 137}
138/* -->8-- */
125 139
140/* --8<-- dlist_pop_back */
126bool 141bool
127dlist_pop_back(struct dlist *dlist, T *data) 142dlist_pop_back(struct dlist *dlist, T *data)
128{ 143{
@@ -146,7 +161,9 @@ dlist_pop_back(struct dlist *dlist, T *data)
146 else 161 else
147 return false; 162 return false;
148} 163}
164/* -->8-- */
149 165
166/* --8<-- dlist_insert_next */
150struct dlist_element * 167struct dlist_element *
151dlist_insert_next(struct dlist *dlist, struct dlist_element *element, T data) 168dlist_insert_next(struct dlist *dlist, struct dlist_element *element, T data)
152{ 169{
@@ -177,7 +194,9 @@ dlist_insert_next(struct dlist *dlist, struct dlist_element *element, T data)
177 194
178 return new_element; 195 return new_element;
179} 196}
197/* -->8-- */
180 198
199/* --8<-- dlist_insert_prev */
181struct dlist_element * 200struct dlist_element *
182dlist_insert_prev(struct dlist *dlist, struct dlist_element *element, T data) 201dlist_insert_prev(struct dlist *dlist, struct dlist_element *element, T data)
183{ 202{
@@ -208,7 +227,9 @@ dlist_insert_prev(struct dlist *dlist, struct dlist_element *element, T data)
208 227
209 return new_element; 228 return new_element;
210} 229}
230/* -->8-- */
211 231
232/* --8<-- dlist_remove */
212void 233void
213dlist_remove(struct dlist *dlist, struct dlist_element *element) 234dlist_remove(struct dlist *dlist, struct dlist_element *element)
214{ 235{
@@ -231,7 +252,9 @@ dlist_remove(struct dlist *dlist, struct dlist_element *element)
231 252
232 free(element); 253 free(element);
233} 254}
255/* -->8-- */
234 256
257/* --8<-- dlist_free */
235void 258void
236dlist_free(struct dlist *dlist) 259dlist_free(struct dlist *dlist)
237{ 260{
@@ -244,6 +267,7 @@ dlist_free(struct dlist *dlist)
244 267
245 dlist_init(dlist); 268 dlist_init(dlist);
246} 269}
270/* -->8-- */
247 271
248void 272void
249dlist_apply_rev(struct dlist *dlist, void (*visit)(T data, void *cl), void *cl) 273dlist_apply_rev(struct dlist *dlist, void (*visit)(T data, void *cl), void *cl)
@@ -289,6 +313,7 @@ remove_if(struct dlist *list)
289 } 313 }
290} 314}
291 315
316/* --8<-- dlist_merge */
292struct dlist * 317struct dlist *
293dlist_merge(struct dlist *list1, struct dlist *list2) 318dlist_merge(struct dlist *list1, struct dlist *list2)
294{ 319{
@@ -355,7 +380,9 @@ dlist_merge(struct dlist *list1, struct dlist *list2)
355 // Zeiger auf Liste1 zurückliefern 380 // Zeiger auf Liste1 zurückliefern
356 return list1; 381 return list1;
357} 382}
383/* -->8-- */
358 384
385/* --8<-- dlist_sort */
359struct dlist * 386struct dlist *
360dlist_sort(struct dlist *list) 387dlist_sort(struct dlist *list)
361{ 388{
@@ -380,6 +407,7 @@ dlist_sort(struct dlist *list)
380 407
381 return list; 408 return list;
382} 409}
410/* -->8-- */
383 411
384void 412void
385merge_test(void) 413merge_test(void)