Bonjour à tous;
J'ai une liste d'entiers définit comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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