diff options
Diffstat (limited to 'rushs/tinyprintf/dlist/dlist-2.c')
| -rw-r--r-- | rushs/tinyprintf/dlist/dlist-2.c | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/rushs/tinyprintf/dlist/dlist-2.c b/rushs/tinyprintf/dlist/dlist-2.c deleted file mode 100644 index 5ccdaa3..0000000 --- a/rushs/tinyprintf/dlist/dlist-2.c +++ /dev/null @@ -1,113 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -#include "dlist.h" - -int dlist_get(const struct dlist *list, size_t index) -{ - if (index >= list->size) - return -1; - - struct dlist_item *i; - for (i = list->head; index; index--, i = i->next) - { - continue; - } - - return i->data; -} - -int dlist_insert_at(struct dlist *list, int element, size_t index) -{ - if (index > list->size || element < 0) - return 0; - else if (index == list->size) - dlist_push_back(list, element); - else if (index == 0) - dlist_push_front(list, element); - else - { - struct dlist_item *new = malloc(sizeof(struct dlist_item)); - if (new == NULL) - return 0; - new->data = element; - - struct dlist_item *i; - for (i = list->head; index - 1; index--, i = i->next) - continue; - new->next = i->next; - i->next->prev = new; - i->next = new; - new->prev = i; - list->size++; - } - return 1; -} - -int dlist_find(const struct dlist *list, int element) -{ - int index = 0; - struct dlist_item *i; - for (i = list->head; i && i->data != element; index++, i = i->next) - continue; - if (!i) - return -1; - return index; -} - -int dlist_remove_at(struct dlist *list, size_t index) -{ - if (index >= list->size) - return -1; - int res; - struct dlist_item *item; - if (list->size == 1) - { - item = list->head; - res = list->head->data; - list->head = NULL; - list->tail = NULL; - } - else if (index == 0) - { - item = list->head; - res = item->data; - item->next->prev = NULL; - list->head = item->next; - } - else if (index == list->size - 1) - { - item = list->tail; - res = item->data; - item->prev->next = NULL; - list->tail = item->prev; - } - else - { - for (item = list->head; index; index--, item = item->next) - continue; - - res = item->data; - item->prev->next = item->next; - item->next->prev = item->prev; - } - - free(item); - list->size--; - return res; -} - -void dlist_clear(struct dlist *list) -{ - if (list->size == 0) - return; - for (struct dlist_item *i = list->head; i;) - { - struct dlist_item *tmp = i->next; - free(i); - i = tmp; - } - list->size = 0; - list->head = NULL; - list->tail = NULL; -} |
