diff options
| author | Thomas Schmucker <ts@its1.de> | 2020-10-04 14:36:07 +0200 |
|---|---|---|
| committer | Thomas Schmucker <ts@its1.de> | 2020-10-04 14:36:07 +0200 |
| commit | 6fb072f62c2f50118dd5cb377d10c76ece51e5fb (patch) | |
| tree | d4572ba16b2ab45a7601b70cdb5811023ac3b390 /dlist.c | |
| parent | ace33ff2c18c732e7ac30c49d95f7c35e06d7cee (diff) | |
| download | data-structures-6fb072f62c2f50118dd5cb377d10c76ece51e5fb.tar.gz data-structures-6fb072f62c2f50118dd5cb377d10c76ece51e5fb.tar.bz2 data-structures-6fb072f62c2f50118dd5cb377d10c76ece51e5fb.zip | |
Setze srcut-Marker...
Diffstat (limited to 'dlist.c')
| -rw-r--r-- | dlist.c | 28 |
1 files changed, 28 insertions, 0 deletions
| @@ -10,6 +10,7 @@ | |||
| 10 | /* Project */ | 10 | /* Project */ |
| 11 | #include "util.h" | 11 | #include "util.h" |
| 12 | 12 | ||
| 13 | /* --8<-- dlist_type */ | ||
| 13 | typedef int T; | 14 | typedef int T; |
| 14 | 15 | ||
| 15 | struct dlist { | 16 | struct 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 */ | ||
| 24 | void | 27 | void |
| 25 | dlist_init(struct dlist *dlist) | 28 | dlist_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 */ | ||
| 31 | bool | 36 | bool |
| 32 | dlist_empty(struct dlist *dlist) | 37 | dlist_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 */ | ||
| 37 | static struct dlist_element * | 44 | static struct dlist_element * |
| 38 | create_element(T data) | 45 | create_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 */ | ||
| 50 | struct dlist_element * | 59 | struct dlist_element * |
| 51 | dlist_push_front(struct dlist *dlist, T data) | 60 | dlist_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 */ | ||
| 76 | struct dlist_element * | 87 | struct dlist_element * |
| 77 | dlist_push_back(struct dlist *dlist, T data) | 88 | dlist_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 */ | ||
| 102 | bool | 115 | bool |
| 103 | dlist_pop_front(struct dlist *dlist, T *data) | 116 | dlist_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 */ | ||
| 126 | bool | 141 | bool |
| 127 | dlist_pop_back(struct dlist *dlist, T *data) | 142 | dlist_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 */ | ||
| 150 | struct dlist_element * | 167 | struct dlist_element * |
| 151 | dlist_insert_next(struct dlist *dlist, struct dlist_element *element, T data) | 168 | dlist_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 */ | ||
| 181 | struct dlist_element * | 200 | struct dlist_element * |
| 182 | dlist_insert_prev(struct dlist *dlist, struct dlist_element *element, T data) | 201 | dlist_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 */ | ||
| 212 | void | 233 | void |
| 213 | dlist_remove(struct dlist *dlist, struct dlist_element *element) | 234 | dlist_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 */ | ||
| 235 | void | 258 | void |
| 236 | dlist_free(struct dlist *dlist) | 259 | dlist_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 | ||
| 248 | void | 272 | void |
| 249 | dlist_apply_rev(struct dlist *dlist, void (*visit)(T data, void *cl), void *cl) | 273 | dlist_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 */ | ||
| 292 | struct dlist * | 317 | struct dlist * |
| 293 | dlist_merge(struct dlist *list1, struct dlist *list2) | 318 | dlist_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 */ | ||
| 359 | struct dlist * | 386 | struct dlist * |
| 360 | dlist_sort(struct dlist *list) | 387 | dlist_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 | ||
| 384 | void | 412 | void |
| 385 | merge_test(void) | 413 | merge_test(void) |
