Bonjour a tous!
je me prends la tete avec une fonction pour creer une liste d'éléments chainés avec des pointeurs et ce de maniere recursive...l'ordre est le nbre d'elements de ma liste..
Avec la définition d'un element de ma liste telle que:
pElemListe = ^TElemListe;
TElemListe = Object
Valeur : Integer ;
Suiv : pElemListe;
end;
j'ai ecris ca:
function creer_liste(Ordre: integer) : pElemListe;
var
tmp : pElemListe;
begin
new(tmp);
if Racine = nil then Racine := Tmp; {sauvegarde du premier element créé, qui est la racine}
Tmp^.Valeur := Ordre; {numero de l'element}
if ordre <> 0 then
Tmp^.Suiv := creer_liste(ordre - 1) {appel recursif}
else
Tmp^.Suiv := Nil; {si on arrive à ordre = 0 => dernier element va pointer nil}
end;
je pense que ca chie au niveau de l'appel recursif, l'affectation de l'adresse du nouvel element (pas encore créé) à l'element deja créé (d'adresse 'tmp') pose peut-etre probleme...
kes vous en pensez ?
j'utilise BORLAND Pascal v7.0 et une autre question, aussi, la fonction Seg() renvoie bien le segment du pointeur, par contre, la fonction off(), sensée retourner l'offset dans le segment, ne marche pas (unknown definition), si vous avez une idée...
En vous remerciant d'avance !!
Paow`Z
Partager