#include "list.h" #include #include int list_node_add(list_t *list, void *data) { list_node_t *new_node = (list_node_t *)malloc(sizeof(list_node_t)); if (new_node == NULL) { return LIST_ERR_MALLOC_FAILED; } new_node->data = data; new_node->next = NULL; if (*list == NULL) { *list = new_node; } else { list_node_t *node = *list; while (node->next != NULL) { node = node->next; } node->next = new_node; } return LIST_OK; } int list_node_remove(list_t *list, void *data) { if (*list == NULL) { return LIST_ERR_LIST_IS_NULL; } list_node_t *node = *list; list_node_t *prev = NULL; while (node != NULL) { if (node->data == data) { if (prev == NULL) { if (node->next != NULL) { *list = node->next; } else { *list = NULL; } } else { if (node->next != NULL) { prev->next = node->next; } else { prev->next = NULL; } } free(node); return LIST_OK; } prev = node; node = node->next; } } int list_size(list_t *list) { if (*list == NULL) { return -1; } int size = 0; list_node_t *node = *list; while (node != NULL) { size++; node = node->next; } return size; }