op_reverse_rotate.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* op_reverse_rotate.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2022/11/17 20:08:14 by gychoi #+# #+# */ 9 /* Updated: 2022/12/07 19:55:20 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "push_swap.h" 14 15 void rra(t_deque *deque_a) 16 { 17 t_list *node; 18 19 if (deque_a->head == deque_a->tail) 20 return ; 21 node = deque_a->tail; 22 deque_a->tail = deque_a->tail->prev; 23 deque_a->tail->next = NULL; 24 node->next = deque_a->head; 25 node->prev = NULL; 26 deque_a->head->prev = node; 27 deque_a->head = node; 28 write(1, "rra\n", 4); 29 } 30 31 void rrb(t_deque *deque_b) 32 { 33 t_list *node; 34 35 if (deque_b->head == deque_b->tail) 36 return ; 37 node = deque_b->tail; 38 deque_b->tail = deque_b->tail->prev; 39 deque_b->tail->next = NULL; 40 node->next = deque_b->head; 41 node->prev = NULL; 42 deque_b->head->prev = node; 43 deque_b->head = node; 44 write(1, "rrb\n", 4); 45 } 46 47 static void rrr_rra(t_deque *deque_a) 48 { 49 t_list *node; 50 51 if (deque_a->head == deque_a->tail) 52 return ; 53 node = deque_a->tail; 54 deque_a->tail = deque_a->tail->prev; 55 deque_a->tail->next = NULL; 56 node->next = deque_a->head; 57 node->prev = NULL; 58 deque_a->head->prev = node; 59 deque_a->head = node; 60 } 61 62 static void rrr_rrb(t_deque *deque_b) 63 { 64 t_list *node; 65 66 if (deque_b->head == deque_b->tail) 67 return ; 68 node = deque_b->tail; 69 deque_b->tail = deque_b->tail->prev; 70 deque_b->tail->next = NULL; 71 node->next = deque_b->head; 72 node->prev = NULL; 73 deque_b->head->prev = node; 74 deque_b->head = node; 75 } 76 77 void rrr(t_deque *deque_a, t_deque *deque_b) 78 { 79 rrr_rra(deque_a); 80 rrr_rrb(deque_b); 81 write(1, "rrr\n", 4); 82 }