Bonjour, j'ai deux interrogations :
soit la structure de donnée suivante :
Des éléments sont stockés entre borne_inf et borne_sup (exclu), borne_sup peut-être avant borne_inf, on considère que le tableau est circulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Max : constant Integer := 10; type T_Tab is array (1 .. Max) of Integer; type T_liste is record Contenu : T_Tab; borne_sup : Integer; borne_inf : Integer; Taille : Integer; -- taille de la liste de données (en nombre d'élements) end record; MaList : T_Liste;
On gére cette "liste" de données.
On ne peut ajouter un élément qu'a la borne_sup.
Le retrait d'un élément s'effectuant toujours à borne_inf
- J'aimerais savoir comment extraire le dernier élément de cette liste (donc qui se trouve à l'indice borne_sup-1) sans n'avoir accès ni à borne_sup ni borne_inf ?
Bon ça, je pourrais trouver tout seul, il suffit d'utiliser un tableau temporaire et de retirer tous les éléments juqu'a que la "liste" soit vide (= plus aucun élément).
Mon interrogation principale est la suivante :
comment inverser l'ordre de la liste sans utiliser de tableau ou variable temporaire donc de manière récursive ?
Le tout, toujours sans n'avoir accès à borne_sup et borne_inf mais aux seules opérations de base :
-ajouter un élément
-retirer un élément
-extraire le dernier élément (1ère interrogation)
-tester si la liste est vide ou pleine (renvoi un booléen)
Piste : je pense qu'il faut faire quelquechose du genre (pseudo-code) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procédure inverser(f: t_liste) e:= extraire_dernier_element(f) si not file_vide(f) alors inverser(f); fin; ajouter_un_élément(f,e)
Partager