Récursivité sur une liste
Bonjour à tous;
J'ai une liste d'entiers définit comme suit:
Code:
1 2 3 4 5 6
|
Type listeEntiers = ^cellule
cellule = record
info : integer;
suivant : listeEntiers;
end; |
Et ma question est la suivante:
Ecrire une procédure récursive permettant d'afficher les éléments de la liste dans l'ordre inverse:
J'ai pensé chercher le dernier élément, l'écrire, puis le supprimer et enfin, on recommence ainsi de suite jusqu'à temps qu'il n'y a plus d'élément.
(En faite on part de la fin et on arrive au début, en supprimant les éléments un à un).
Selon vous est-ce que ma démarche est judicieuse ?
Code:
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
|
procedure inverse (a:listeEntiers) ;
var p:liste;
begin
if a = nil
then write (' La liste est vide, elle ne contient pas d'élément ')
else if a^.suivant = nil
then write (a^.info)
else begin
p:=a
while (a^.suivant <> nil ) do
begin
a:=a^.suivant;
end;
if a^.suivant = nil
then begin
write (a^.info);
dispose (a);
end;
end;
p:=a;
inverse (a);
end; |
Est-ce que ma procédure est juste ?
Je vous remercie d'avance pour votre réponse :)