1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| int check_seen_all(t_employee *emp)
{
int i;
i = 0;
while (emp->next != NULL)
{
if (emp->seen != 1)
return (1);
emp = emp->next;
}
return (0);
}
char *choose(t_employee *emp)
{
while (emp->next != NULL)
{
if (emp->seen == 0)
return (emp->lname);
emp = emp->next;
}
return (NULL);
}
int check_order(char *str, t_employee *emp)
{
while (emp->next != NULL)
{
if (strcmp(str, emp->next->lname) > 0 && emp->seen != 1)
return (-1);
emp = emp->next;
}
return (0);
}
void sort_all(t_employee *emp)
{
t_employee *tmp;
char *str;
int i;
i = 0;
tmp = emp;
str = my_malloc(sizeof(char) * 20);
while (/*check_seen_all(tmp) != 0*/i != 10) //le i est provisoire, c'est pour éviter la boucle inf
{
str = choose(emp);
while (emp->next != NULL)
{
if (strcmp(str, emp->next->lname) > 0 && emp->seen != 1) //si la str est avant l'élément de la liste et si je n'ai pas print cet élément
{
str = emp->next->lname; // je change la str avec la nouvelle chaine
if (check_order(str, emp) == 0) // si l'élément est bien le premier dans l'apha je marque l'élément comme vu
emp->seen = 1;
}
emp = emp->next;
}
printf("%s\n", str); // print du str (le premier élément dans l'alpha et pas encore vu)
emp = tmp;
i++;
}
} |
Partager