Mon, 27 Sep 2021 17:49:23 +0200
implement linked list find
src/linked_list.c | file | annotate | diff | comparison | revisions |
1.1 --- a/src/linked_list.c Mon Sep 27 17:00:19 2021 +0200 1.2 +++ b/src/linked_list.c Mon Sep 27 17:49:23 2021 +0200 1.3 @@ -98,7 +98,7 @@ 1.4 } cx_linked_list; 1.5 1.6 int cx_ll_add(cx_list_s *list, void *elem) { 1.7 - cx_linked_list *linkedlist = (cx_linked_list *) list; 1.8 + cx_linked_list *ll = (cx_linked_list *) list; 1.9 1.10 struct cx_linked_list_node *node = cxMalloc(list->allocator, 1.11 sizeof(struct cx_linked_list_node) + list->itemsize); 1.12 @@ -109,8 +109,7 @@ 1.13 memcpy(node->payload, elem, list->itemsize); 1.14 1.15 int ret = cx_linked_list_add( 1.16 - &linkedlist->begin, 1.17 - &linkedlist->end, 1.18 + &ll->begin, &ll->end, 1.19 offsetof(struct cx_linked_list_node, prev), 1.20 offsetof(struct cx_linked_list_node, next), 1.21 node 1.22 @@ -124,21 +123,31 @@ 1.23 } 1.24 1.25 int cx_ll_insert(cx_list_s *list, size_t index, void *elem) { 1.26 - cx_linked_list *linkedList = (cx_linked_list *) list; 1.27 + cx_linked_list *ll = (cx_linked_list *) list; 1.28 // TODO: implement using low level API 1.29 return 1; 1.30 } 1.31 1.32 void *cx_ll_remove(cx_list_s *list, size_t index) { 1.33 - cx_linked_list *linkedList = (cx_linked_list *) list; 1.34 + cx_linked_list *ll = (cx_linked_list *) list; 1.35 // TODO: implement using low level API 1.36 return NULL; 1.37 } 1.38 1.39 size_t cx_ll_find(cx_list_s *list, void *elem) { 1.40 - cx_linked_list *linkedList = (cx_linked_list *) list; 1.41 - // TODO: implement using low level API 1.42 - return 0; 1.43 + CxListComparator cmp = list->cmpfunc; 1.44 + cx_linked_list *ll = (cx_linked_list *) list; 1.45 + 1.46 + size_t index; 1.47 + struct cx_linked_list_node* node = ll->begin; 1.48 + for (index = 0 ; index < list->size ; index++) { 1.49 + void* current = node->payload; 1.50 + if (cmp(current, elem) == 0) { 1.51 + return index; 1.52 + } 1.53 + node = node->next; 1.54 + } 1.55 + return index; 1.56 } 1.57 1.58 void *cx_ll_last(cx_list_s *list) {