diff --git a/du6/list_ops.c b/du6/list_ops.c index 6353b30..8bfcc8d 100644 --- a/du6/list_ops.c +++ b/du6/list_ops.c @@ -10,4 +10,19 @@ list_t *new_list(size_t length, list_element_t elements[]) { memcpy(list->elements, elements, sizeof(list_element_t) * length); } return list; +} +list_t *append_list(list_t *list1, list_t *list2) { + size_t len1 = list1 ? list1->length : 0; + size_t len2 = list2 ? list2->length : 0; + + list_t *result = malloc(sizeof(list_t) + sizeof(list_element_t) * (len1 + len2)); + if (!result) return NULL; + + result->length = len1 + len2; + if (len1 > 0) + memcpy(result->elements, list1->elements, sizeof(list_element_t) * len1); + if (len2 > 0) + memcpy(result->elements + len1, list2->elements, sizeof(list_element_t) * len2); + + return result; } \ No newline at end of file