diff options
| author | Dominik Kaiser | 2024-04-26 18:36:07 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-04-26 18:36:07 +0200 |
| commit | 9ec4dd2e78c61a2b2be8d645d3e523f954d83e9e (patch) | |
| tree | f824fdab2ce898a39dd9c79b22a627d156374e59 /cmd_optimization.c | |
| parent | fb11c45c1fa1246dbc80b491f55598698a932e5f (diff) | |
| download | push_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.c | 32 |
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); |
