alexandrheathen

Untitled

May 26th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. int remove(List* list, int index)
  2. {
  3.        Node* temp = (Node*)malloc(sizeof(Node));
  4.        Node* nodeToRemove = (Node*)malloc(sizeof(Node));
  5.        if (isListEmpty(list))
  6.               return -1;
  7.        if (index == 0)
  8. {
  9.               nodeToRemove = list->head;
  10.               list->head = list->head->next;
  11.               list->head->previous = NULL;
  12.               nodeToRemove->next = NULL;
  13.               nodeToRemove->value = NULL;
  14.               free(nodeToRemove);
  15.               list->size--;
  16. return 0; }
  17. else
  18. {
  19. {
  20. if (index != list->size - 1)
  21.        if (index < list->size / 2)
  22. {
  23. }
  24. else
  25. {
  26. }
  27. list->size--;
  28. return 0;
  29. temp = list->head;
  30. for (int i = 1; i < index - 1; i++)
  31. {
  32.        temp = temp->next;
  33. }
  34. nodeToRemove = temp->next;
  35. temp->next = nodeToRemove->next;
  36. nodeToRemove->next->previous = temp;
  37. nodeToRemove->previous = NULL;
  38. nodeToRemove->next = NULL;
  39. nodeToRemove->value = NULL;
  40. free(nodeToRemove);
  41. temp = list->tail;
  42. for (int i = list->size; i > index + 1; i--)
  43. {
  44.        temp = temp->previous;
  45. }
  46. nodeToRemove = temp->previous;
  47. temp->previous = nodeToRemove->previous;
  48. nodeToRemove->previous->next = temp;
  49. nodeToRemove->previous = NULL;
  50. nodeToRemove->next = NULL;
  51. nodeToRemove->value = NULL;
  52. free(nodeToRemove);
  53. nodeToRemove = list->tail;
  54. list->tail = nodeToRemove->previous;
  55. list->tail->next = NULL;
  56. nodeToRemove->previous = NULL;
  57. nodeToRemove->next = NULL;
  58. nodeToRemove->value = NULL;
  59. free(nodeToRemove);
  60. list->size--;
  61. }
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment