Accueil     Soft. MacOSX     Soft. MacOS/PC     PHP     Python     ROMS GBA     TP d'info     DBZ-GT     Martingales     Galeries     Liens     @  

Exercice du TD11 suite du TP10

unit u_pile;
interface

type
liste = ^maillon;
type_elts = integer;
maillon = record
suivant: liste;
val: type_elts;
end;
pile = liste;

{ Ces fonctions et prcedure sont utilisables par le programme appelant l'unite. }
procedure pile_init (var p: pile);
function est_vide (p: pile): boolean;
function depile (var p: pile): type_elts;
procedure empile (var p: pile; i: type_elts);
function longueur_pile (p: pile): integer;
procedure parcours_pile (p: pile);
procedure supprime_pile (p: pile);

{ il n'y a pas de procédure est_pleine parcequ'il n'y a pas de dimension }
{ fixer, le nombre d'élément de la liste dépend de la mémoire. }
{ contact: http://www.Software-DS.com }


implementation

{ Les fonctions et procedures qui suivent sont utilisees par l'unite et seulement par elle }
{ Ces fonctions sont cachees, ou protegees ! elles ne peuvent par etre utilisees par le programme appelent l'unitee ! ! ! }
procedure init_liste (var l: liste);
begin
l := nil;
end;
{ Fin de 'init' }

function vide_liste (l: liste): boolean;
begin
vide_liste := (l = nil);
{ renvoie true si la liste est vide }
end; { Fin de 'vide_liste' }

procedure insere_tete_liste (elt: type_elts; var l: liste);
var
p: liste;
begin
p := l;
new(l);
l^.val := elt;
l^.suivant := p;
end;
{ Fin de 'insere_tete_liste' }

procedure parcours_liste (l: liste);
begin
if not vide_liste(l) then
begin
parcours_liste(l^.suivant);
writeln(l^.val : 3);
end;
end;
{ Fin de 'parcours_liste' }

procedure super_tete (var l: liste);
var
p: liste;
begin
if l = nil then
writeln('Votre liste est vide, impossible de supprimer la tete')
else
begin
p := l;
l := l^.suivant;
dispose(p);
end;
end;
{ Fin de 'super_tete' }

procedure supprime_liste (var l: liste);
begin
if l^.suivant = nil then
{ On doit donc remonter jusqu'au premier }
begin
supprime_liste(l^.suivant);
dispose(l);
end;
end;
{ Fin de 'supprime_liste' }

function longueur_liste (l: liste): integer;
begin
{ On considere la liste non-nulle }
if vide_liste(l) then
longueur_liste := 0
else
begin
if l <> nil then
begin
if l = nil then
longueur_liste := 0
else
longueur_liste := 1 + longueur_liste(l^.suivant);
end;
end;
end;
{ Fin de 'longueur_liste' }

function dernier_liste (l: liste): liste;
begin
if vide_liste(l) then
dernier_liste := nil
else
begin
if l^.suivant <> nil then
dernier_liste := dernier_liste(l^.suivant)
else
dernier_liste := l;
end;
end;
{ Fin de 'dernier_liste' }

procedure inser_classe_elt_liste (i: type_elts; var l: liste);
var
p, r: liste;
begin
if vide_liste(l) then
begin
insere_tete_liste(i, l);
end
else if (l^.val > i) then
inser_classe_elt_liste(i, l^.suivant)
else
begin
new(p);
p^.val := l^.val;
l^.val := i;
p^.suivant := l^.suivant;
l^.suivant := p;
end;
end;
{ Fin de 'inser_classe_elt_liste' }

procedure supper_elt_liste (i: type_elts; var l: liste);
var
p, q: liste;
begin
if vide_liste(l) then
begin
writeln('Votre liste est vide.');
readln; { pause }
end
else if (l^.val > i) then
begin
if l^.suivant <> nil then
supper_elt_liste(i, l^.suivant)
else
writeln('La valeur ', i : 2, ' n''est pas dans la liste');
end
else if (l^.val = i) then
begin
p := l^.suivant;
q := l;
l := p;
p := q;
dispose(p);
end;
end;
{ Fin de 'supper_elt_liste' }

{ Fin des fonctions et procedures cachees ;-) }


procedure pile_init (var p: pile);
begin
init_liste(p);
end;
{ Fin de 'pile_init' }

function est_vide (p: pile): boolean;
begin
est_vide := vide_liste(p);
end;
{ Fin de 'est_vide' }

function depile (var p: pile): type_elts;
begin
depile := p^.val;
super_tete(p);
end;
{ Fin de 'depile' }

procedure empile (var p: pile; i: type_elts);
begin
insere_tete_liste(i, p);
end;
{ Fin de 'empile' }

function longueur_pile (p: pile): integer;
begin
longueur_pile := longueur_liste(p);
end;
{ Fin de 'longueur_pile' }

procedure parcours_pile (p: pile);
begin
parcours_liste(p);
end;
{ Fin de 'parcours_pile' }

procedure supprime_pile (p: pile);
begin
supprime_liste(p);
end;
{ Fin de 'parcours_pile' }

{ ©2001 All Rights Reserved to http://www.Software-DS.com 18/12/01 }
end.





Haut de la page - Page précédente - Page générée en 0.00382 sec.
Recherche personnalisée
 

1843266 visiteurs.   ©2001-2023 All Rights Reserved to Software-DS.com
Made with a mac  
Confidentialité