IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

[LG]Listes chainées avec pointeur


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 9
    Points : 10
    Points
    10
    Par défaut [LG]Listes chainées avec pointeur
    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

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Pourquoi tu ne fais tu pas d'insertion en tête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    var Racine:pElemListe;
    ...
    procedure creer_liste(Racine:pElemListe;Ordre: integer);
    var tmp:pElemListe; 
    begin 
    new(tmp); 
    Tmp^.Valeur:=Ordre;
    Tmp^.Suiv:=Racine;
    if ordre> 0 then creer_liste(Tmp,ordre-1);
    end;
     
    begin
    creer_liste(Racine,12);
    end.
    Désolé j'ai un peu tout modifier... Ca devrait marcher, mais j'ai pas vérifier
    Pour la fonction offset, c'est normal qu'il ne la trouve pas puisqu'elle s'appelle ofs()... Je suis pas sûr qu'elle marche pour BP par contre...

    a+

  3. #3
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Bon déjà, y'a un truc que je ne saisis pas dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if Racine = nil then Racine := Tmp; {sauvegarde du premier element créé, qui est la racine} 
    Tmp^.Valeur := Ordre; {numero de l'element}
    A ton avis, quelle est la valeur de Racine après la première exécution :

Discussions similaires

  1. tableau de chaine de caractere avec pointeur
    Par Oussama1 dans le forum C++
    Réponses: 7
    Dernier message: 15/12/2008, 13h12
  2. Liste chainée et pb de pointeur
    Par P'tite Nélodie dans le forum C
    Réponses: 9
    Dernier message: 11/10/2006, 14h41
  3. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  4. Réponses: 4
    Dernier message: 26/09/2005, 22h36
  5. Mal a la tete avec liste chainée d'objet
    Par Raton dans le forum C++
    Réponses: 23
    Dernier message: 03/08/2005, 22h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo