Tri d'une pile avec liste simplement chainée
Bonjours,
J'essaye de trouver un algo permettant des trier dans une liste simplement chainée a l'aide d'une pile.
pour cela, j'ai penser parcourir ma pile, et faire un swap lorsque l'element du dessus est plus grand que celui de dessous, et cela, n fois la taille de la pile. (un peu comme un tris dans une chaine normal).
voila comment je mi suis pris :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| while (j < pile->size)
{
s1 = pile->top; //element du début
s2 = pile->top->nxt; // second element
while (i < pile->size)
{
if (!tris_ascii(s1->nom, s2->nom))
{
// si s1->nom > s2->nom on swap (non trouvé)
}
s1 = s1->nxt; //on parcour
s2 = s2->nxt; //on parcour
i++;
}
i = 1;
j++;
} |
j'ai entendu des listes doublement chainée qui pourrait peut etre facilité la chose.
quelqu'un aurait une idée?