summaryrefslogtreecommitdiff
path: root/stack_utils.c
diff options
context:
space:
mode:
authorDominik Kaiser2024-04-15 21:56:02 +0200
committerGitHub2024-04-15 21:56:02 +0200
commit05e786db0ae74da69012e1b5aa2dc9169e56723b (patch)
tree4b812065facb59bd774d9b88a5ea2550b0f28ebd /stack_utils.c
parentedede8f8fd0ef6a51271bd7c12a784d9acbad7a8 (diff)
parentdb6feb2e65edd411f02d50b2717850b97c85a675 (diff)
downloadpush_swap-05e786db0ae74da69012e1b5aa2dc9169e56723b.tar.gz
push_swap-05e786db0ae74da69012e1b5aa2dc9169e56723b.zip
Merge pull request #1 from dpu-kaiser/rotating_arrays
Rotating arrays
Diffstat (limited to 'stack_utils.c')
-rw-r--r--stack_utils.c83
1 files changed, 58 insertions, 25 deletions
diff --git a/stack_utils.c b/stack_utils.c
index ad14504..f240395 100644
--- a/stack_utils.c
+++ b/stack_utils.c
@@ -6,48 +6,81 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/12 20:31:30 by dkaiser #+# #+# */
-/* Updated: 2024/04/13 14:33:35 by dkaiser ### ########.fr */
+/* Updated: 2024/04/15 21:53:40 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
-void stack_swap(t_list **stack)
+void stack_swap(t_stack *stack)
{
- t_list *first_elem;
+ int tmp;
- first_elem = *stack;
- *stack = (*stack)->next;
- first_elem->next = (*stack)->next;
- (*stack)->next = first_elem;
+ if (stack->size > 1)
+ {
+ tmp = stack->stack[0];
+ stack->stack[0] = stack->stack[1];
+ stack->stack[1] = tmp;
+ }
}
-void stack_push(t_list **dst_stack, t_list **src_stack)
+void stack_push(t_stack *dst_stack, t_stack *src_stack)
{
- t_list *elem;
+ int i;
- elem = *src_stack;
- *src_stack = elem->next;
- ft_lstadd_front(dst_stack, elem);
+ i = dst_stack->size;
+ while (i > 0)
+ {
+ dst_stack->stack[i] = dst_stack->stack[i-1];
+ i--;
+ }
+ dst_stack->stack[0] = src_stack->stack[0];
+ dst_stack->size++;
+ i = 1;
+ while (i < src_stack->size)
+ {
+ src_stack->stack[i-1] = src_stack->stack[i];
+ i++;
+ }
+ src_stack->size--;
}
-void stack_rotate(t_list **stack)
+void stack_rotate(t_stack *stack)
{
- t_list *first_elem;
+ int tmp;
+ int i;
- first_elem = *stack;
- *stack = (*stack)->next;
- first_elem->next = NULL;
- ft_lstlast(*stack)->next = first_elem;
+ tmp = stack->stack[0];
+ i = 1;
+ while (i < stack->size)
+ {
+ stack->stack[i-1] = stack->stack[i];
+ i++;
+ }
+ stack->stack[i-1] = tmp;
}
-void stack_rrotate(t_list **stack)
+void stack_rrotate(t_stack *stack)
{
- t_list *first_elem;
+ int tmp;
+ int i;
- first_elem = *stack;
- while ((*stack)->next->next)
- *stack = (*stack)->next;
- (*stack)->next->next = first_elem;
- (*stack)->next = NULL;
+ i = stack->size - 1;
+ tmp = stack->stack[i];
+ while (i > 0)
+ {
+ stack->stack[i] = stack->stack[i-1];
+ i--;
+ }
+ stack->stack[0] = tmp;
+}
+
+void stack_print(t_stack *stack)
+{
+ int i;
+
+ i = 0;
+ while (i < stack->size)
+ ft_printf("%d ", stack->stack[i++]);
+ ft_printf("\n");
}