summaryrefslogtreecommitdiff
path: root/cmd_optimization.c
diff options
context:
space:
mode:
authorDominik Kaiser2024-04-26 18:36:07 +0200
committerDominik Kaiser2024-04-26 18:36:07 +0200
commit9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e (patch)
treef824fdab2ce898a39dd9c79b22a627d156374e59 /cmd_optimization.c
parentfb11c45c1fa1246dbc80b491f55598698a932e5f (diff)
downloadpush_swap-9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e.tar.gz
push_swap-9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e.zip
Sort three and some norme cleanup
Diffstat (limited to 'cmd_optimization.c')
-rw-r--r--cmd_optimization.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/cmd_optimization.c b/cmd_optimization.c
index ac023c5..b310f34 100644
--- a/cmd_optimization.c
+++ b/cmd_optimization.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/13 16:42:34 by dkaiser #+# #+# */
-/* Updated: 2024/04/26 13:55:55 by dkaiser ### ########.fr */
+/* Updated: 2024/04/26 15:52:23 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -22,6 +22,15 @@ static enum e_pscmd get_cmd(t_list *cmd)
return (NO_CMD);
}
+static void set_last(t_list **last, t_list **cur)
+{
+ *last = (*last)->next;
+ if (*last)
+ *cur = (*last)->next;
+ else
+ *cur = NULL;
+}
+
static void optimize_redundant(t_psdata *data, enum e_pscmd cmd1,
enum e_pscmd cmd2)
{
@@ -30,7 +39,10 @@ static void optimize_redundant(t_psdata *data, enum e_pscmd cmd1,
int optimizations;
cur = data->cmds;
- last = cur;
+ last = ft_lstnew(NULL);
+ if (!last)
+ return ;
+ last->next = cur;
optimizations = 0;
while (cur && cur->next)
{
@@ -42,11 +54,7 @@ static void optimize_redundant(t_psdata *data, enum e_pscmd cmd1,
ft_lstdelone(cur, free);
optimizations++;
}
- last = last->next;
- if (last)
- cur = last->next;
- else
- cur = NULL;
+ set_last(&last, &cur);
}
if (optimizations)
optimize_redundant(data, cmd1, cmd2);
@@ -60,7 +68,9 @@ static void optimize_two_stack_ops(t_psdata *data, enum e_pscmd cmd1,
int optimizations;
cur = data->cmds;
- last = cur;
+ last = ft_lstnew(NULL);
+ if (!last)
+ return ;
optimizations = 0;
while (cur && cur->next)
{
@@ -72,11 +82,7 @@ static void optimize_two_stack_ops(t_psdata *data, enum e_pscmd cmd1,
ft_lstdelone(cur, free);
optimizations++;
}
- last = last->next;
- if (last)
- cur = last->next;
- else
- cur = NULL;
+ set_last(&last, &cur);
}
if (optimizations)
optimize_two_stack_ops(data, cmd1, cmd2, new_cmd);