#include <stdlib.h>
#include "list.h"

void	ft_swap(int *a, int *b)
{
	int	tmp;

	tmp = *a;
	*a = *b;
	*b = tmp;
}

t_list	*sort_list(t_list *lst, int (*cmp)(int, int))
{
	t_list	*curr;
	int		swapped;

	if (lst == NULL) // Vérifier si la liste est vide
		return NULL;
	
	swapped = 1;
	// Répéter tant que des échanges ont été effectués
	while (swapped)
	{
		swapped = 0;
		curr = lst;
		// Parcours de la liste
		while (curr->next != NULL)
		{
			// Comparer les éléments et échanger si nécessaire
			if ((*cmp)(curr->data, curr->next->data) == 0)
			{
				ft_swap(&curr->data, &curr->next->data);
				swapped = 1;  // Indiquer qu'un échange a eu lieu
			}
			curr = curr->next;
		}
	}
	return lst;  // Retourner la liste triée
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: