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

Collection et Stream Java Discussion :

[Collections]Implémentation de Pile


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut [Collections]Implémentation de Pile
    Salut à tous!!
    Je suis en contradiction avec un document.Dans ce document on implemente la methode ajouteEnTete(Element e) qui ajoute en tête d'une liste l'element e comme suit: je rappelle d'abord qu'une liste est constitué d'une tete et d'un reste;reste est une liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ajouteEnTete(Element e){
         Liste l = new Liste();
        l.tete= tete;
        l.reste=reste;
        tete=e;
        reste=l;
    }
    je trouve que cette implementation conduit à : [e e reste ].

    A mon avis l'impléméntation allait être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ajouteEnTete (Element e) { 
        Liste l = new Liste();
        l.tete= tete;
        l.reste=reste;
        tete=e;
        reste.tete= tete;
        reste.reste= reste;
    }
    Je m'explique: au depart j'ai une liste [ tete reste] à la fin je veux avoir [e tete reste].
    Je crée d'abord une liste vide.Je mets dans cette liste vide à sa tete la tete de la liste donnée et je mets dans le reste de la liste vide le reste de la liste donnée.reste etant une liste il a une tete et un reste.Je mets la tete de la liste donnée dans la tete du reste et le reste de la liste donnée je le mets dans le reste du reste.Ainsi j'ai [e tete reste]

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Par défaut
    Nop la premiere implementation est bonne

    l.tete= tete;
    l.reste=reste;
    on aura l == [tete reste] qui est une liste

    tete=e;
    reste=l;
    ca nous fait this == [ e [tete reste]] qui correspond bien a l ajout que l on voulait.

    tete=e;
    reste.tete= tete;
    reste.reste= reste;
    La tu obtiendras [e [e reste]]
    Tu perds tete si tu n'utilises pas l, car tu ecrases tete qui devient e quand tu fais 'tete=e';
    D'ailleurs l ne sert à rien si tu ne l'utilises pas en l'affectant.

    reste est une liste. Pk tu veux la decomposer en [head tail] obligatoirement ?
    Par contre fais gaffe dans ton ecriture, a moins que tu ne fasses le mecanisme inconscient, tu ne peux pas avoir de [e tete reste]
    mais toujours des choses de la forme [e [tete reste]] de par la nature recursive de ta liste.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    Merci sylk!! je vais essayer de voir ça comme tu me dis!! à tout à l'heure

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    Concernant la première implémentation:

    void ajouteEnTete( Element e) { Liste l = new Liste();
    l.tete= tete;
    l.reste=reste;
    tete=e;
    reste=l;
    }

    Ce que je me disais c'est quoi? c'est que de la première instruction jusqu'à la troisième instruction on a l==[tete reste] comme tu l'as dit.
    à la quatrième instruction on l==[e reste].A cette étape je pense que le l=[tete reste] n'existe plus, il a été remplacé par l=[e reste].Du coup à mon avis qu'on nous faisons reste=l,ça veut en fait dire que reste=[e reste].Ce qui fait que l==[e [e reste]].

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    Salut Sylk!!
    Je trouve que je m'embrouille sur l'interpretation de cette implémentation.Je serai ravi si tu peux me dire ce qui ne va pas dans mon raisonnement.
    A bientôt

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Par défaut
    J'ai l'impression que tu t'embrouilles dans les différentes variables.

    tete tout seul, c'est l'equivalent de this.tete, la tete de ta classe.
    l.tete c'est la tete de l.

    C'est l'impression que tu me donnes que tu dis
    jusqu'à la troisième instruction on a l==[tete reste] comme tu l'as dit.
    à la quatrième instruction on l==[e reste]
    alors qu'on a plus touché à l. l reste donc [tete reste]

    en faisant le remplacement avec les this :

    void ajouteEnTete( Element e) { Liste l = new Liste();
    l.tete= this.tete;
    l.reste=this.reste;
    this.tete=e;
    this.reste=l;
    }
    Ca te parle plus comme ca ?
    Il est bon de les utiliser au moins au début pour éviter ce genre de confusion.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    Merci Sylk!! je suis très satisfait.Tu as bien compris ma difficulté.En fait dans mon raisonnement je me retrouvais avec deux listes l'ancienne liste et une autre liste avec e en tête de la liste.Ce que tu as appelé this je pense que c'est l'objet de depart.Tu n'as pas quelque chose à me dire sur l'emploi de this?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    On ne pouvait pas appeler cet objet de depart par une autre reference que this?

  9. #9
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    Salut ioch!! je suis satisfait !!
    A bientôt

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Par défaut
    Voila tout est dedans
    this indique la variable en cours.
    il est généralement implicite et peut provoquer ce genre de confusion !

    bon courage pour la suite de découverte du java

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    Merci Sylk!!

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Par défaut
    Mais je t'en prie
    hesites pas si y a autre chose

Discussions similaires

  1. Etat de la pile sous Linux et Windows
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 16/02/2003, 01h28
  2. La mémoire en Pmode et en Rmode - la pile
    Par le mage tophinus dans le forum Assembleur
    Réponses: 15
    Dernier message: 16/02/2003, 01h00
  3. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  4. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49
  5. [TASM] Déclarer le segment de pile
    Par cipher dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 01/10/2002, 03h58

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