lsite chainée en ADA avec allocation static des objets dans un tableau

lsite chainée en ADA avec allocation static des objets dans un tableau - Ada - Programmation

Marsh Posté le 07-03-2013 à 13:54:40    

Je souhaiterai créer un liste chainée en ADA avec la particularité de faire des allocation statique et non dynamique des objets.
En effet ayant une runtime ADA ne permettant pas de faire d'allocation dynamique je suis obligé de faire les allocations dans un tableau.
Cepandant dans ce cas la je narrive pas a gerer ma liste chainée.
Que doige mettre dans mon tableau uniquement les elements a chainé ou aussi un index de position dans la liste chainée?
Merci d'avance pour vos réponse

Reply

Marsh Posté le 07-03-2013 à 13:54:40   

Reply

Marsh Posté le 07-03-2013 à 14:10:40    

A priori non, dans le tableau on met que les éléments.
Mais c'est pas un simple tableau.

Reply

Marsh Posté le 07-03-2013 à 14:31:08    

Du coup mon tableau ne contenant que mes elements c'est ma chaine qui va gérer le tableau.
g doit creer un record qui sera ma chaine et qui contiendra mon tablean et le pointeur vers un element?

Reply

Marsh Posté le 07-03-2013 à 14:39:07    

voila un extrait de ma specification :  
   
   type maillon_T is private;
   type list_buffer_T is private;
   type list_T is access maillon_T;
   Empty_List : constant list_T := null;
   type list_chainee is new list_T;  
 
   type etat_elt_T is (Libre, Utilise);
       
   type maillon_T is record
      Value : etat_elt_T;
      Next : list_T;
      State: etat_elt_T := Libre;
   end record;  
   
   type list_buffer_T is array (1 .. List_Depth) of maillon_T;
 
   Buffer : list_buffer_T;

Reply

Marsh Posté le 07-03-2013 à 14:51:36    

Ben si t'as pas droit à l'allocation dynamique pourquoi tu utilise des access.
Ou alors, je comprend pas.

Reply

Marsh Posté le 07-03-2013 à 15:03:00    

en fait la runtime ADA m'interdit de faire des allocations :
pragma Restrictions (No Allocator);
 
Je pensais jsute au allocation de memoire pour les objets...mais tu as raison j'ai meme pas le droit de faire des access je crois.
Bon là je suis perdu alors.

Reply

Marsh Posté le 07-03-2013 à 16:06:00    

Code :
  1. --------------------------------------------------------------                                                                                                
  2. --                                                          --                                                                                                
  3. --            MODULE DE STRUCTURES DE DONNEES               --                                                                                                
  4. --                                                          --                                                                                                
  5. --             PAQUETAGE DES LISTES CONTIGUES               --                                                                                                
  6. --                                                          --                                                                                                
  7. -- preconditions                                            --                                                                                                
  8. --    Inserer(Dans, En, Val): 1 <= En <= Longueur(Dans) + 1 --                                                                                                
  9. --    Supprimer (Dans, En), Ieme (Dans, En),                --                                                                                                
  10. --    Changer_Ieme (Dans, En, Val), Tronquer (Dans, En):    --                                                                                                
  11. --        1 <= En <= Longueur (Dans)                        --                                                                                                
  12. -- contrainte d'implantation                                --                                                                                                
  13. --    Inserer (Dans, En, Val), Prolonger (Dans, Val):       --                                                                                                
  14. --        Longueur (Dans) < Dans.Taille_Max                 --                                                                                                
  15. -- proprietes fonctionnelles                                --                                                                                                
  16. --    longueur (l) =                                        --                                                                                                
  17. --        si l = creation alors 0                           --                                                                                                
  18. --        sinsi l = inserer(l', k, e) alors longueur(l')+1  --                                                                                                
  19. --        sinon soit l = supprimer(l', k); longueur(l')-1   --                                                                                                
  20. --        fsi                                               --                                                                                                
  21. --    ieme(insSer(l, k, e), i) =                           --                                                                                                
  22. --        si 1 <= i < k alors ieme(l, i)                     --                                                                                              
  23. --        sinsi i = k alors e                               --                                                                                                
  24. --        sinon ieme(l, i - 1)                              --                                                                                                
  25. --        fsi                                               --                                                                                                
  26. --    ieme(supprimer(l, k), i) =                            --                                                                                                
  27. --        si 1 <= i < k alors ieme(l, i)                     --                                                                                              
  28. --        sinon ieme(l, i + 1)                              --                                                                                                
  29. --        fsi                                               --                                                                                                
  30. --    changer_ieme (l, k, e) = inserer(supprimer(l,k),k,e)  --                                                                                                
  31. --    prolonger (l, e) = inserer(l, longueur(l), e)         --                                                                                                
  32. --    tronquer (l, k) =                                     --                                                                                                
  33. --        si longueur(l) = k alors l                        --                                                                                                
  34. --        sinon tronquer(supprimer(l,k),k) fsi              --                                                                                                
  35. --                                                          --                                                                                                
  36. -- Auteur: Christian CARREZ,                                --                                                                                                
  37. -- Institution: CNAM 292 rue Saint Martin, 75141 Paris 03   --                                                                                                
  38. -- Derniere modification: 1 juillet 1997                    --                                                                                                
  39. --------------------------------------------------------------


 
 
Si ça peut t'aider voici une spécification ça s'appelle un liste contihue. C'est tiré de Structure de Données. j'ai pas l'isbn.

Reply

Marsh Posté le 07-03-2013 à 16:07:39    

Ou pas,hein ?

Reply

Sujets relatifs:

Leave a Replay

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