Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. /*
  2. ** EPITECH PROJECT, 2019
  3. ** double.c
  4. ** File description:
  5. ** double.c
  6. */
  7.  
  8. #include "double_list.h"
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11.  
  12. bool double_list_add_elem_at_position(double_list_t *front_ptr, \
  13. double elem, unsigned int position)
  14. {
  15. double_list_t new_node = malloc(sizeof(double_list_t));
  16. double_list_t temp = *front_ptr;
  17.  
  18. if (!new_node || !temp || (position > double_list_get_size(temp)))
  19. return (false);
  20. if (position == 0)
  21. return (double_list_add_elem_at_front(front_ptr, elem));
  22. new_node->value = elem;
  23. new_node->next = NULL;
  24. while (position > 1) {
  25. if (!temp)
  26. return (false);
  27. temp = temp->next;
  28. position--;
  29. }
  30. new_node->next = temp->next;
  31. temp->next = new_node;
  32. return (true);
  33. }
  34.  
  35. bool double_list_del_elem_at_front(double_list_t *front_ptr)
  36. {
  37. double_list_t temp = *front_ptr;
  38.  
  39. if (!temp)
  40. return (false);
  41. *front_ptr = temp->next;
  42. free(temp);
  43. return (true);
  44. }
  45.  
  46. bool double_list_del_elem_at_back(double_list_t *front_ptr)
  47. {
  48. double_list_t temp = *front_ptr;
  49.  
  50. if (!temp)
  51. return (false);
  52. while (temp->next->next != NULL)
  53. temp = temp->next;
  54. temp->next = NULL;
  55. temp = temp->next;
  56. free(temp);
  57. return (true);
  58. }
  59.  
  60. bool double_list_del_elem_at_position(double_list_t *front_ptr, \
  61. unsigned int position)
  62. {
  63. double_list_t temp = *front_ptr;
  64.  
  65. if (!temp || (position > double_list_get_size(temp)))
  66. return (false);
  67. if (position == 0)
  68. return (double_list_del_elem_at_front(front_ptr));
  69. while (position > 2) {
  70. if (!temp)
  71. return (false);
  72. temp = temp->next;
  73. position--;
  74. }
  75. temp->next = temp->next->next;
  76. return (true);
  77. }
  78.  
  79. double double_list_get_elem_at_front(double_list_t list)
  80. {
  81. return (!list ? 0 : list->value);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement