Enregistrer pointeurs et leurs contenus dans un fichier

Enregistrer pointeurs et leurs contenus dans un fichier - Ada - Programmation

Marsh Posté le 10-12-2004 à 17:38:59    

Voila, j'ai fait un programme gérant une file (ou liste) d'entiers naturels (ajout, supprimer, afficher, initialiser....(fonctions de bases koi)). Pour ce faire, j'ai réalisé deux versions du logiciel:
 
1. definit en file, par sa tete et sa queue, avec un nombre maximal de 5 elements dans une file.
 
2.definit en liste, cellules reliees par pointeur (nombre illimité de cellules).
 
Mon problèlme se trouve dans la 2ème version. Dans la premiere, pas de pb pour enregistrer dans un fichier binaire grace a direct_io, mais pour la 2ème version, etant donné ke les pointeurs accèdent à la mémoire centrale,  lorsque j'enregistre la liste, il ne memorise ke le premier element (puis qu_il n'enregistre que les pointeurs).  
Je voudrai donc sauvegarder l'ensemble de la liste.
 
J'ai bien sûr pensé à le transformer en file ou tableau avant de l'enregistrer mais le pb est qu'il fodrai contraindre la taille du tableau, ce qui est contradictoir avec l'utilisation de liste (dont le principal avantage est justement le nombre illimité d'elements).
Voila, jespere avoir expliqué assez clairement mon pb.
merci de votre aide

Reply

Marsh Posté le 10-12-2004 à 17:38:59   

Reply

Marsh Posté le 12-12-2004 à 13:55:33    

Je pense que tu ne dois pas passer par un fichier à acces direct mais par un fichier séquentiel (sequential_IO). Tu parcours ta liste et tu écris chaque cellules dans le fichier au fur et à mesure.

Reply

Marsh Posté le 24-12-2004 à 09:19:21    

sinon tu crées un conteneur qui contient egalement le nb d'elements, style:
 
type entier;
type pt_entier is access entier;
type entier is
record  
  val:  integer;
  prec: pt_entier;
  suiv: pt_entier;
end record
type liste is  
record
  tete:  pt_entier;
  queue: pt_entier;  
  nb:    natural;
end record;
 
et là tu geres, en plus de ta tête et de ta queue, le nombre d'elements.
 
pour sauvegarder, tu peut declarer un tableau (contraint) de taille liste.nb


Message édité par blacksad988 le 24-12-2004 à 09:20:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed