Re: Question à propos des listes chaînées
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.ada ]
On 8 mar, 22:25, animatri...@gmail.com wrote:
> On 8 mar, 21:59, Gautier <gaut...@fakeaddress.nil> wrote:
>
>
>
>
>
> > animatri...@gmail.com wrote:
> > >>>> Est-ce que ton insertion en tête ne concerne qu'un seul élément ?
> > >>>> Est-ce que la liste est vide ou non au départ ?
>
> > > Oui, elle ne concerne qu'un élément (le reste est inséré un peu plus
> > > tard).
> > > La liste est vide au départ.
>
> > >>> Si ta liste est non définie, LC est contient une adresse bidon et c'est
mal parti.
> > >>> Si l'élément a doit être le 1er de la liste, il manque encore: LC:= a .
>
> > > DC := LC;
> > > allouer(a);
> > > a.el = unedonneevalide;
> > > a.suiv := LC;
> > > LC := a;
> > > DC := a.suiv; -- nécessaire pour ajouter la suite
>
> > >>> Il manque: allouer(a);
>
> > > allouer(a);
> > > a.el := unedonne;
> > > a.suiv := DC.suiv;
> > > DC.suiv := a;
> > > DC := DC.suiv;
> > > a.suiv := DC;
>
> > ^ hum, là tu fais: a.suiv:= a...
>
> > > J'ai un access check failed sur a.suiv := DC.suiv; (que j'avais tout
> > > de même sans le allouer(a))
>
> > C'est compréhensible, puisque dans la 1ère phase tu as mis (à deux reprises!)
> > dans DC l'adresse LC d'avant "LC:= a;" qui n'était pas alloué (=null ou
adresse
> > aléatoire)...
> > Si tu sais que ta liste doit être vide au départ, pourquoi ne pas commencer
par
>
> > allouer(LC);
> > LC.el := unedonneevalide;
> > LC.suiv:= null;
> > DC:= LC;
>
> > ______________________________________________________________
> > Gautier --http://www.mysunrise.ch/users/gdm/index.htm
> > Ada programming --http://www.mysunrise.ch/users/gdm/gsoft_fr.htm
>
> > NB: For a direct answer, e-mail address on the Web site!
>
> Merci.
> Pour l'ajout à la suite, j'ai fait un
>
> allouer(a);
> a.el := unedonnee;
> a.suiv := DC.suiv;
> DC.suiv := a;
> DC := DC.suiv;
>
> Et ca marche :)
> Par contre, j'aimerais pouvoir supprimer les deux derniers éléments de
> la séquence.
> Comment faire sachant, que je n'ai pas un DC.prec ?
>
> Il faut que je recherche l'emplacement ?
>
> Merci pour l'aide- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -
Bonjour,
J'aimerais copier une liste dans une autre, voila ma procedure :
procedure Copie_Liste (LC1 : in out adresse; LC2 : out adresse) is
a : adresse;
b : adresse;
begin
while LC1 /= null loop
allouer(LC2);
LC2.el := LC1.el;
LC2.suiv := LC1.suiv;
LC1 := LC1.suiv;
LC2 := LC2.suiv;
end loop;
end Copie_Liste;
Sauf que cela ne marche pas, d'où l'erreur pourrait-elle venir ?
En vous remerciant.

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|