/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* optimization.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: dkaiser static void sort_array(int size, int *tmp_array) { int i; int k; int tmp; i = 0; while (i < size - 1) { k = i + 1; while (k < size) { if (tmp_array[i] > tmp_array[k]) { tmp = tmp_array[i]; tmp_array[i] = tmp_array[k]; tmp_array[k] = tmp; } k++; } i++; } } static void override_stack(t_list **stack, int *tmp_array) { t_list *cur; int content; int i; cur = *stack; while (cur) { i = 0; content = *(int*)cur->content; while (content != tmp_array[i]) i++; *(int*)cur->content = i; cur = cur->next; } } void stack_optimize(t_list **stack) { int size; int *tmp_array; t_list *cur; int i; size = ft_lstsize(*stack); cur = *stack; tmp_array = malloc(size * sizeof(int)); if (!tmp_array) ; // TODO: Error handling i = 0; while(cur) { tmp_array[i++] = *(int*)cur->content; cur = cur->next; } if (i != size) ; // TODO: Error handling sort_array(size, tmp_array); i = 0; override_stack(stack, tmp_array); }