diff options
| author | sanine <sanine.not@pm.me> | 2025-10-24 13:40:15 -0500 | 
|---|---|---|
| committer | sanine <sanine.not@pm.me> | 2025-10-24 13:40:15 -0500 | 
| commit | 4167860e015a779f83a17bc8754c7070bdfba336 (patch) | |
| tree | e0dfc64edc44e5ad50a4dfa7988715c9a10f7ade /lichen.c | |
| parent | 24fbfb8c41c62b11506668a22074379115f57600 (diff) | |
add list prepend
Diffstat (limited to 'lichen.c')
| -rw-r--r-- | lichen.c | 22 | 
1 files changed, 19 insertions, 3 deletions
| @@ -79,10 +79,10 @@ void li_free_ll(struct li_ll_t *list, void (*free_data)(void*)) {  void li_ll_append(struct li_ll_t *list, void *data) {    li_llnode_t *n = li_alloc_llnode(); -  n->data = data;    if (n == NULL) {      return;    } +  n->data = data;    if (list->end != NULL) {      list->end->next = n;      list->end = n; @@ -93,9 +93,25 @@ void li_ll_append(struct li_ll_t *list, void *data) {    list->count += 1;  } + +void li_ll_prepend(struct li_ll_t *list, void *data) { +  li_llnode_t *n = li_alloc_llnode(); +  if (n == NULL) { +    return; +  } +  n->data = data; +  if (list->head != NULL) { +    n->next = list->head; +    list->head = n; +  } else { +    list->head = n; +    list->end = n; +  } +  list->count += 1; +} + +  struct li_ll_t * li_copy_list(struct li_ll_t *list) {    list = list;    return NULL;  } - - | 
