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

Pascal Discussion :

Récupérer le Nième élément d'une liste chaînée [Non suivi]


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Récupérer le Nième élément d'une liste chaînée
    Bonjour.

    J'ai une liste simplement chaînée de plusieurs points, un point étant défini par une abscisse x, une ordonnée y et nom Z.
    J'ai créé ma liste, et je souhaite récupérer le Nieme point designé par un entier.

    Voici ce que j'ai écrit :
    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
    16
     
    FUNCTION niemePoint (n : integer ; p : t_polygone) : t_point;
    var
         i:integer    ;
         c1:t_cellule;
         begin
         i:=0;
         c1:= p.tete^;
         repeat
         c1:=p.cellule.suivant^;
         i:=i+1;
         until (i=n);
          niemepoint:=c1.item;
     
     
         end;
    N'étant pas tres à l'aise avec les listes, je ne doute pas qu'il y a une erreur.

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Coordonnées (x, y) et nom Z ? Plutôt bizarre...

    Tu as fait un mauvais choix de boucle : il vaudrait mieux utiliser for ou while dans ce cas (teste avec n=0)

    Ta boucle affecte toujours la même valeur à c1 ; je n'ai pas la définition des types que tu utilises mais je pense que tu voulais dire c1 := c1^.cellule.suivant;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    voici les enregistrement que j'utilise.
    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
    16
    17
    18
    19
     
    TYPE 	pointeur = ^t_cellule;
     
            t_point = RECORD
    		x   : integer;
    		y   : integer;
    		nom : string
    	END;
            t_cellule = RECORD
            item     : t_point;
                    suivant  : pointeur
     
            END;
     	t_polygone = RECORD
                    tete     : pointeur;
                    queue    : pointeur;
                    cellule  : t_cellule;
    		nb_point : integer
    	END;
    je peux pas mettre c1 a la place de p car c1 est de type t_cellule et p est de type t_polygone.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    c1 et p.tete sont de type pointeur : l'initialisation doit être c1 := p.tete

    c1^ est de type t_cellule, donc le traitement de c1 dans la boucle est c1 := c1^.suivant

    Le principe d'une liste chaînée est que chaque maillon contient un pointeur vers le maillon suivant : p n'intervient pas dans ce cas.

Discussions similaires

  1. Réponses: 15
    Dernier message: 02/05/2015, 17h21
  2. [TPW] Erreur lors de l'ajout d'un élément dans une liste chaînée triée
    Par sangimed dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 18/01/2013, 21h37
  3. [Turbo Pascal] Suppression d'éléments d'une liste chaînée simple
    Par gigimino dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 22/07/2011, 14h28
  4. [Free Pascal] Insertion d'éléments dans une liste chaînée
    Par Pacorabanix dans le forum Free Pascal
    Réponses: 4
    Dernier message: 20/04/2010, 00h42
  5. Réponses: 6
    Dernier message: 09/01/2007, 11h38

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