[Pascal] Trier liste chaînée

Fermé
assouma - 23 déc. 2008 à 17:54
 assouma - 28 déc. 2008 à 16:20
Bonjour,
est-ce- que je peux trier une liste chainée et comment??svp aidez moi
cette liste chainée contient des mots de type string(le trie par ordre alphabétique)
en language Pascal;
merci.

2 réponses

salut
voici mon prog et j'ai 1 prblm ds ce prog,ds la procedure d'affichage (il fait l'inverse) je ne sais pas ou est le probléme, et pour le tri aussi (je ne sais pas exactement ou est le probléme),svp aidez moi j'ai besoin de ce program urgent
un grand MERCI.

program liste_chainee;
uses wincrt;
type ptrElem= ^Element;
Element= record
mot:string[20];
suivant:ptrElem;
end;
var f:text;
liste,liste2:ptrElem;


procedure insertion_tete(var f:text);
var i,n:integer;
nom:string;
mot:string[20];
begin
writeln (' combien de mots que vous voulez entrer:');
readln(n);
writeln(' Entrer le nom de ce fichier:');
readln(nom);
assign (f,nom);
rewrite(f);
writeln(' entrer les mots: ');
i:=0;
repeat
begin
readln(mot);
writeln(f,mot);
i:=i+1;
end;
until i=n;
close(f);
end;


procedure inserer_liste(var listeC:ptrElem);
var elem:ptrElem;
n,i:integer; mot:string;

begin
reset (f);
elem:=nil;
REPEAT
begin
new(listec);
readln(f,mot);

listec^.mot:=mot;
listec^.suivant:=elem;
elem:=listec;
end;
UNTIL eof(f);close(f);
end;



procedure Affichage (var listeA:ptrElem);
var elem:ptrElem; mot:string;
begin
elem:=listeA;
write (' inversement l`ordre de la liste : ');
while( elem<>nil) do
begin
write('',elem^.mot,'');
elem:=elem^.suivant;
end;
end;


PROCEDURE recherche(var l:ptrelem);
var p:ptrelem;b:boolean;motE:string;
begin
write (' entrer mot,por le trouver ou non : ');
p:=l;
b:=false;
read (motE);
while (p<>nil) and( b=false) do
begin
if p^.mot =motE then BEGIN b:=true ;writeln(' ce mot existe dans la liste'); END
else
begiN
p:=p^.suivant;
end;

end;
end;
procedure tri (l1:ptrelem);
var t:string ; n,i:integer;
echange:boolean;

begin
echange:=true;
writeln (' combien de mot que vous avez entrer:');
readln (n);
while echange =true do
begin
for i:=0 to n-2 do
begin
if (l1^.mot)>(l1^.suivant^.mot) then
begin
write ('******************');
t:=l1^.mot;
l1^.mot:=l1^.suivant^.mot;
l1^.suivant^.mot:=t;


end;
l1:=l1^.suivant;
writeln (l1^.mot);
end;
echange:=false;

end;

end;


begin
insertion_tete(f);
inserer_liste(liste);
Affichage(liste);
recherche(liste);
tri(liste);
end.
4
salut assouma
oui dans le pacal on peut comparer deux string et on peut trier une liste chaInée
MAIS; le comment ..il faut que toi essyes et nous somme là pour t'aider :)
cdlt
0