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]suppression dans une liste chainée


Sujet :

Langage Pascal

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

    Informations forums :
    Inscription : février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut [LG]suppression dans une liste chainée
    voila je me casse toujours les dents sur la suppression et si quelqu'un pouvait me dire ou est-ce que ça merde
    merci d'avance
    voici le code que j'ai ecris
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    procedure supprimer_un(var TDL:ptliste;element:integer);
    var ptint:ptliste;
        ptint1:ptliste;
        i,j:integer;
    begin
      ptint:=TDL;
      ptint1:=TDL;
      i:=1;
      j:=1;
      if ptint=nil
         then TDL:=ptint
         else while (ptint^.elem<>element) and (ptint<>nil) do
                    begin
                      ptint:=ptint^.suiv;
                      i:=i+1;
                    end;
      if ptint^.elem=element
         then
           begin
             ptint1:=ptint^.suiv;
             ptint:=TDL;
             while (ptint^.elem<>element) and (j<i) do
                   begin
                     ptint:=ptint^.suiv;
                     j:=j+1;
                   end;
             ptint^.suiv:=ptint1;
           end
         else writeln('cet ‚l‚ment n''est pas dans la liste');
    end;
    voila
    merci d'avance encore une fois
    @+
    mister dsg

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    j'ai aussi entendu parlé pour la suppression dans une liste chainé de la fonction : dispose(pt)
    seulement je ne sais pas comment elle marche ni comment s'en servir
    voila bien
    @+
    mister dsg

  3. #3
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    avril 2002
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : avril 2002
    Messages : 2 452
    Points : 4 232
    Points
    4 232
    Par défaut
    Ohlala...
    Dispose sert à désallouer la mémoire associé à un objet... Si tu ne fais pas de dispose, tu ne libères pas la mémoire... Et elle risque de manquer à un moment donné...
    Il faut absolument le faire donc !

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    ouais je sais bien seulement je ne sais pas comment me servir de dispose et j'aimerai aussi pouvoir faire ma procedure sans passer par dispose
    voila
    @+
    mister dsg

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    et eventuellement par rapport a ma procedure est-ce que je peux mettre dispose sans trop modifier la procedure et a quel endroit je dois le mettre ???
    merci d'avance
    @+
    mister dsg

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2003
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : mars 2003
    Messages : 2 738
    Points : 4 401
    Points
    4 401
    Par défaut
    Juste avant le

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    ben j'ai deja essayé de mettre juste dispose avant le mais seulement quand je veux afficher ma liste et ben ça met tout plein de valeur bizarre
    et donc j'aimerai savoir si a partir du code que j'ai mis si je dois enlever ou modifier quelque chose pour que le dispose marche correctement
    merci d'avance
    @+
    mister_dsg

  8. #8
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    mars 2003
    Messages
    7 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : mars 2003
    Messages : 7 775
    Points : 56 519
    Points
    56 519
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il est dommage de faire deux boucles pour en fait chercher une fois l'élément à supprimer puis encore une fois l'élément qui le précède dans la liste. Si tu ne fais qu'une seule boucle en gardant trace systématiquement de l'élément qui précède celui à supprimer, tu as tout-de-suite tout ce qu'il te faut pour la suppression. Ca pourrait donner quelque chose comme :
    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
    20
    21
    22
    23
    Procedure Supprimer_Un (var TDL : ptListe; Element : Integer);
    Var ptPrec, ptInt : ptListe;
    Begin
      ptPrec:=Nil;
      ptInt:=TDL;
      while (ptInt^.Elem <> Element) and (ptInt <> Nil) do
        begin
          ptPrec:=ptInt;
          ptInt:=ptInt^.Suiv;
        end;
      if ptInt <> Nil
         then
           begin
             if ptPrec = Nil
                then
                  TDL:=ptInt^.Suiv
                else
                  ptPrec^.Suiv:=ptInt^.Suiv;
             Dispose(ptInt);
           end
         else
           WriteLn('Cet élément n''est pas dans la liste');
    End;
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

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

    Informations forums :
    Inscription : février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    en effet je ne sais pas pourquoi je n'y ai pas penser, et en plus ça marche donc merci bien pour ce petit coup de main
    a charge de revanche je l'espère
    merci bien
    @+
    mister_dsg

  10. #10
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    mars 2003
    Messages
    7 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : mars 2003
    Messages : 7 775
    Points : 56 519
    Points
    56 519
    Billets dans le blog
    2
    Par défaut
    Il n'y a pas de quoi !
    N'oublie pas d'activer la balise [Résolu].
    A bientôt j'espère !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression dans une liste chainée
    Par dazwy dans le forum C
    Réponses: 10
    Dernier message: 27/12/2011, 16h32
  2. probleme suppression dans une liste chainée
    Par Ganondorf dans le forum Débuter
    Réponses: 7
    Dernier message: 06/10/2010, 19h02
  3. Suppression d'un élément dans une liste chainée
    Par jbarreau-mainson dans le forum Débuter
    Réponses: 1
    Dernier message: 06/05/2009, 15h49
  4. suppression dans une liste chainée
    Par tomtom421 dans le forum C
    Réponses: 8
    Dernier message: 21/04/2007, 16h29
  5. Réponses: 2
    Dernier message: 10/10/2005, 02h25

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