op_silent1_bonus.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* silent_operations1.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2022/12/07 19:53:34 by gychoi #+# #+# */ 9 /* Updated: 2022/12/07 20:02:00 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "checker_bonus.h" 14 15 void silent_pa(t_deque *deque_a, t_deque *deque_b) 16 { 17 t_list *node; 18 19 if (deque_b->head == NULL) 20 return ; 21 node = deque_b->head; 22 if (node->next) 23 { 24 node->next->prev = NULL; 25 deque_b->head = node->next; 26 } 27 else 28 { 29 deque_b->head = NULL; 30 deque_b->tail = NULL; 31 } 32 node->next = deque_a->head; 33 if (deque_a->head) 34 deque_a->head->prev = node; 35 deque_a->head = node; 36 if (deque_a->tail == NULL) 37 deque_a->tail = node; 38 (deque_b->size)--; 39 (deque_a->size)++; 40 } 41 42 void silent_pb(t_deque *deque_a, t_deque *deque_b) 43 { 44 t_list *node; 45 46 if (deque_a->head == NULL) 47 return ; 48 node = deque_a->head; 49 if (node->next) 50 { 51 node->next->prev = NULL; 52 deque_a->head = node->next; 53 } 54 else 55 { 56 deque_a->head = NULL; 57 deque_a->tail = NULL; 58 } 59 node->next = deque_b->head; 60 if (deque_b->head) 61 deque_b->head->prev = node; 62 deque_b->head = node; 63 if (deque_b->tail == NULL) 64 deque_b->tail = node; 65 (deque_a->size)--; 66 (deque_b->size)++; 67 } 68 69 void silent_rra(t_deque *deque_a) 70 { 71 t_list *node; 72 73 if (deque_a->head == deque_a->tail) 74 return ; 75 node = deque_a->tail; 76 deque_a->tail = deque_a->tail->prev; 77 deque_a->tail->next = NULL; 78 node->next = deque_a->head; 79 node->prev = NULL; 80 deque_a->head->prev = node; 81 deque_a->head = node; 82 } 83 84 void silent_rrb(t_deque *deque_b) 85 { 86 t_list *node; 87 88 if (deque_b->head == deque_b->tail) 89 return ; 90 node = deque_b->tail; 91 deque_b->tail = deque_b->tail->prev; 92 deque_b->tail->next = NULL; 93 node->next = deque_b->head; 94 node->prev = NULL; 95 deque_b->head->prev = node; 96 deque_b->head = node; 97 }