/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_linked_list.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tischmid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/01 15:25:42 by tischmid #+# #+# */ /* Updated: 2023/04/01 17:21:01 by tischmid ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_linked_list.h" #include "ft_strlib.h" #include #include t_map_entry *ll_map_new_node(char *key, char *value) { t_map_entry *new_node; new_node = (t_map_entry *) malloc(sizeof(t_map_entry)); new_node->key = key; new_node->value = value; new_node->next = NULL; return (new_node); } char *ll_map_get(t_map_entry *head, char *key) { t_map_entry *current; if (head != NULL) { current = head; while (current != NULL) { if (!ft_strcmp(current->key, key)) return (current->value); current = current->next; } } return (NULL); } void ll_map_push(t_map_entry *head, char *key, char *value) { t_map_entry *current; if (head != NULL) { current = head; while (current->next != NULL) current = current->next; current->next = ll_map_new_node(key, value); } else ft_putstr("head is NULL\n"); } t_map_entry *ll_pop_last(t_map_entry *head) { t_map_entry *current; t_map_entry *retval; if (head != NULL) { if (head->next == NULL) { retval = ll_map_new_node(head->key, head->value); free(head); return (retval); } current = head; while (current->next->next != NULL) current = current->next; retval = ll_map_new_node(current->next->key, current->next->value); free(current->next); current->next = NULL; return (retval); } else return (NULL); } void ll_clear(t_map_entry *head) { if (head != NULL) { while (head->next != NULL) free(ll_pop_last(head)); free(ll_pop_last(head)); } }