Implémentation d'une structure pile
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Implémentation d'une structure pile



  1. #1
    invite7e654dc0

    Implémentation d'une structure pile


    ------

    j'ai creer une structure pile de cette forme:
    Code:
    typedef struct FILO FILO;
    typedef FILO* Filo;
    struct FILO {
       double cont[9];
       Filo next;
    };

    Avec les fonctions qui vont avec:
    Code:
    Filo allocP(){
       Filo p;
       if((p=(Filo)malloc(sizeof(FILO)))==NULL) {
          fprintf(stderr,"Erreur d'allocation dans allocP\n");
          exit(-1);
       }
       return p;
    }
    
    void empile(Filo* p_pile, double* donnee)
    {
       int i;
       Filo p_nouveau = allocP();
       if (p_nouveau != NULL)
          {
    	 for(i=0;i<9;i++) {
    	    (p_nouveau->cont)[i]=donnee[i];
    	 }
                  
    	 p_nouveau->next = *p_pile;
    	 *p_pile = p_nouveau;
          }
    }
    
    void depile(Filo* p_pile)
    {
    
        if (p_pile != NULL)
        {
            Filo temporaire = (*p_pile)->next;
    
            free(*p_pile), *p_pile = NULL;
            *p_pile = temporaire;
        }
     }

    Cependant quand je teste mes fonctions ça ne fonctionne pas:

    Code:
    Filo modif(Filo pile){
       double mom1[9]={0.,1.,2.,3.,4.,5.,6.,7.,8.};
       double mom2[9]={8.,7.,6.,5.,4.,3.,2.,1.,0.};
       empile(&pile,mom1);
       empile(&pile,mom2);
       return pile;
    }
    
    void main(){
       Filo pile=NULL; fprintf(stderr,"%p",pile);
       modif(pile);
       fprintf(stderr,"%p",pile);
       depile(&pile);
       depile(&pile);
    }
    En effet, avant la modification le pointeur est a NIL ce qui est normal, mais après modif il est encore à NIL?????
    Evidemment, par la suite les fonction dépile bug car la pile est vide. Et pourtant selon valgrind il y a bien eu 2 allocations, mais dans ce cas pourquoi la pile n'est pas modifiée. Je comprends pas.

    Aidez moi, svp

    -----

  2. #2
    invite7e654dc0

    Re : Implémentation d'une structure pile

    Excuser moi j'ai trouvé la réponse au moment ou je lisais ce que j'ai posté
    Pour ceux qui cherche le problème dans le main il faut ecrire :
    pile=modif(pile); faute toute bete

Discussions similaires

  1. f.e.m d'une pile
    Par invite89acf925 dans le forum Physique
    Réponses: 3
    Dernier message: 12/12/2010, 10h56
  2. Implémentation sur DSP d'une loi de commande d'un onduleur triphasé
    Par invitef554da18 dans le forum Électronique
    Réponses: 0
    Dernier message: 03/03/2010, 14h25
  3. Résistance d'une pile
    Par invitec068a5d9 dans le forum Physique
    Réponses: 5
    Dernier message: 25/10/2009, 10h39
  4. principe d'une pile
    Par invite7ac151ce dans le forum Chimie
    Réponses: 3
    Dernier message: 15/02/2007, 19h16
  5. Symbolisation d'une pile
    Par mattveil dans le forum Chimie
    Réponses: 6
    Dernier message: 05/02/2007, 06h49