Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ** EPITECH PROJECT, 2019
- ** double.c
- ** File description:
- ** double.c
- */
- #include "double_list.h"
- #include <stdlib.h>
- #include <stdio.h>
- bool double_list_add_elem_at_position(double_list_t *front_ptr, \
- double elem, unsigned int position)
- {
- double_list_t new_node = malloc(sizeof(double_list_t));
- double_list_t temp = *front_ptr;
- if (!new_node || !temp || (position > double_list_get_size(temp)))
- return (false);
- if (position == 0)
- return (double_list_add_elem_at_front(front_ptr, elem));
- new_node->value = elem;
- new_node->next = NULL;
- while (position > 1) {
- if (!temp)
- return (false);
- temp = temp->next;
- position--;
- }
- new_node->next = temp->next;
- temp->next = new_node;
- return (true);
- }
- bool double_list_del_elem_at_front(double_list_t *front_ptr)
- {
- double_list_t temp = *front_ptr;
- if (!temp)
- return (false);
- *front_ptr = temp->next;
- free(temp);
- return (true);
- }
- bool double_list_del_elem_at_back(double_list_t *front_ptr)
- {
- double_list_t temp = *front_ptr;
- if (!temp)
- return (false);
- while (temp->next->next != NULL)
- temp = temp->next;
- temp->next = NULL;
- temp = temp->next;
- free(temp);
- return (true);
- }
- bool double_list_del_elem_at_position(double_list_t *front_ptr, \
- unsigned int position)
- {
- double_list_t temp = *front_ptr;
- if (!temp || (position > double_list_get_size(temp)))
- return (false);
- if (position == 0)
- return (double_list_del_elem_at_front(front_ptr));
- while (position > 2) {
- if (!temp)
- return (false);
- temp = temp->next;
- position--;
- }
- temp->next = temp->next->next;
- return (true);
- }
- double double_list_get_elem_at_front(double_list_t list)
- {
- return (!list ? 0 : list->value);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement