From eef5dd369bc63655fd22779a733cc2696f35b86c Mon Sep 17 00:00:00 2001 From: rask24 Date: Mon, 15 Jan 2024 17:00:25 +0900 Subject: [PATCH] refactor stack operation --- Makefile | 2 +- include/push_swap.h | 4 ++- src/main.c | 4 +-- src/sort/micro_sort.c | 16 ++++------ src/sort/nano_sort.c | 2 +- .../{operation.c => ft_lst_before.c} | 30 ++++++++----------- src/stack_operations/push.c | 14 ++++++++- src/stack_operations/rotate.c | 28 ++++++++--------- src/stack_operations/swap.c | 8 ++++- 9 files changed, 57 insertions(+), 51 deletions(-) rename src/stack_operations/{operation.c => ft_lst_before.c} (59%) diff --git a/Makefile b/Makefile index ce27978..8250bc0 100644 --- a/Makefile +++ b/Makefile @@ -13,10 +13,10 @@ SRC = $(SRC_DIR)/main.c \ $(SRC_DIR)/sort/sort.c \ $(SRC_DIR)/sort/micro_sort.c \ $(SRC_DIR)/sort/nano_sort.c \ - $(SRC_DIR)/stack_operations/operation.c \ $(SRC_DIR)/stack_operations/push.c \ $(SRC_DIR)/stack_operations/swap.c \ $(SRC_DIR)/stack_operations/rotate.c \ + $(SRC_DIR)/stack_operations/ft_lst_before.c \ $(SRC_DIR)/utils/exit_with_error.c OBJ = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRC)) DEP = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.d, $(SRC)) diff --git a/include/push_swap.h b/include/push_swap.h index 3a28bb9..4f44f0a 100644 --- a/include/push_swap.h +++ b/include/push_swap.h @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/10 12:37:54 by reasuke #+# #+# */ -/* Updated: 2024/01/15 16:31:59 by reasuke ### ########.fr */ +/* Updated: 2024/01/15 16:58:32 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,8 @@ void micro_sort(t_list **stack_a, t_list **stack_b); void operate_sa(t_list **stack_a); void operate_ra(t_list **stack_a); void operate_rra(t_list **stack_a); +void operate_pa(t_list **stack_b, t_list **stack_a); +void operate_pb(t_list **stack_a, t_list **stack_b); void push_stack(t_list **stack_1, t_list **stack_2); void swap_stack(t_list **stack); void rotate_stack(t_list **stack); diff --git a/src/main.c b/src/main.c index 50c9a69..b56bf88 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/10 12:37:36 by reasuke #+# #+# */ -/* Updated: 2024/01/15 16:34:16 by reasuke ### ########.fr */ +/* Updated: 2024/01/15 16:59:58 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,9 +39,7 @@ int main(int argc, char **argv) check_args(argc, argv); stack_a = generate_stack(argc, argv); stack_b = NULL; - ft_lstiter(stack_a, put_void); sort(&stack_a, &stack_b, argc); - ft_lstiter(stack_a, put_void); ft_lstclear(&stack_a, free); return (0); } diff --git a/src/sort/micro_sort.c b/src/sort/micro_sort.c index 35f9119..2a97ec1 100644 --- a/src/sort/micro_sort.c +++ b/src/sort/micro_sort.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 16:32:27 by reasuke #+# #+# */ -/* Updated: 2024/01/15 16:52:45 by reasuke ### ########.fr */ +/* Updated: 2024/01/15 16:59:03 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,28 +21,22 @@ void micro_sort(t_list **stack_a, t_list **stack_b) tmp = *(int *)(*stack_b)->content; nano_sort(stack_a, 3); if (tmp == 1) - { - push_stack(stack_b, stack_a); - ft_putendl_fd("pa", STDOUT_FILENO); - } + operate_pa(stack_b, stack_a); if (tmp == 2) { - push_stack(stack_b, stack_a); - ft_putendl_fd("pa", STDOUT_FILENO); + operate_pa(stack_b, stack_a); operate_sa(stack_a); } else if (tmp == 3) { operate_rra(stack_a); - push_stack(stack_b, stack_a); - ft_putendl_fd("pa", STDOUT_FILENO); + operate_pa(stack_b, stack_a); operate_ra(stack_a); operate_ra(stack_a); } else if (tmp == 4) { - push_stack(stack_b, stack_a); - ft_putendl_fd("pa", STDOUT_FILENO); + operate_pa(stack_b, stack_a); operate_ra(stack_a); } } diff --git a/src/sort/nano_sort.c b/src/sort/nano_sort.c index fd0354f..446b477 100644 --- a/src/sort/nano_sort.c +++ b/src/sort/nano_sort.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/12 15:58:22 by reasuke #+# #+# */ -/* Updated: 2024/01/15 15:50:46by reasuke ### ########.fr */ +/* Updated: 2024/01/15 17:02:18 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/stack_operations/operation.c b/src/stack_operations/ft_lst_before.c similarity index 59% rename from src/stack_operations/operation.c rename to src/stack_operations/ft_lst_before.c index 068f2c4..fd8ef57 100644 --- a/src/stack_operations/operation.c +++ b/src/stack_operations/ft_lst_before.c @@ -1,31 +1,27 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* operation.c :+: :+: :+: */ +/* ft_lst_before.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2024/01/15 15:32:19 by reasuke #+# #+# */ -/* Updated: 2024/01/15 16:48:46 by reasuke ### ########.fr */ +/* Created: 2024/01/15 16:54:29 by reasuke #+# #+# */ +/* Updated: 2024/01/15 16:54:44 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ #include "push_swap.h" -void operate_sa(t_list **stack_a) +t_list *ft_lst_before(t_list *lst, t_list *trg) { - swap_stack(stack_a); - ft_putendl_fd("sa", STDOUT_FILENO); -} + t_list *before; -void operate_ra(t_list **stack_a) -{ - rotate_stack(stack_a); - ft_putendl_fd("ra", STDOUT_FILENO); -} - -void operate_rra(t_list **stack_a) -{ - reverse_rotate_stack(stack_a); - ft_putendl_fd("rra", STDOUT_FILENO); + if (!lst) + return (NULL); + before = lst; + while (before->next && before->next != trg) + before = before->next; + if (before->next != trg) + return (NULL); + return (before); } diff --git a/src/stack_operations/push.c b/src/stack_operations/push.c index 8faf51a..fd163ef 100644 --- a/src/stack_operations/push.c +++ b/src/stack_operations/push.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 15:56:53 by reasuke #+# #+# */ -/* Updated: 2024/01/15 16:15:33 by reasuke ### ########.fr */ +/* Updated: 2024/01/15 17:02:11 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,3 +23,15 @@ void push_stack(t_list **stack_1, t_list **stack_2) stack_1_first->next = NULL; ft_lstadd_front(stack_2, stack_1_first); } + +void operate_pa(t_list **stack_b, t_list **stack_a) +{ + push_stack(stack_b, stack_a); + ft_putendl_fd("pa", STDOUT_FILENO); +} + +void operate_pb(t_list **stack_a, t_list **stack_b) +{ + push_stack(stack_a, stack_b); + ft_putendl_fd("pb", STDOUT_FILENO); +} diff --git a/src/stack_operations/rotate.c b/src/stack_operations/rotate.c index 60d47c0..22e27a8 100644 --- a/src/stack_operations/rotate.c +++ b/src/stack_operations/rotate.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 14:05:46 by reasuke #+# #+# */ -/* Updated: 2024/01/15 15:17:24 by reasuke ### ########.fr */ +/* Updated: 2024/01/15 16:56:39 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,20 +26,6 @@ void rotate_stack(t_list **stack) *stack = second; } -t_list *ft_lst_before(t_list *lst, t_list *trg) -{ - t_list *before; - - if (!lst) - return (NULL); - before = lst; - while (before->next && before->next != trg) - before = before->next; - if (before->next != trg) - return (NULL); - return (before); -} - void reverse_rotate_stack(t_list **stack) { t_list *before_last; @@ -53,3 +39,15 @@ void reverse_rotate_stack(t_list **stack) last->next = *stack; *stack = last; } + +void operate_ra(t_list **stack_a) +{ + rotate_stack(stack_a); + ft_putendl_fd("ra", STDOUT_FILENO); +} + +void operate_rra(t_list **stack_a) +{ + reverse_rotate_stack(stack_a); + ft_putendl_fd("rra", STDOUT_FILENO); +} diff --git a/src/stack_operations/swap.c b/src/stack_operations/swap.c index 775ecf8..74faf81 100644 --- a/src/stack_operations/swap.c +++ b/src/stack_operations/swap.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 13:28:54 by reasuke #+# #+# */ -/* Updated: 2024/01/15 13:47:24 by reasuke ### ########.fr */ +/* Updated: 2024/01/15 16:56:03 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,3 +23,9 @@ void swap_stack(t_list **stack) second->next = *stack; *stack = second; } + +void operate_sa(t_list **stack_a) +{ + swap_stack(stack_a); + ft_putendl_fd("sa", STDOUT_FILENO); +}