/ push_swap / push_swap / op_reverse_rotate.c
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  }