[Pascal] Trier liste chaînée

assouma -  
 assouma -
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.
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. assouma
     
    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
  2. amie_ccm
     
    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