RDV+DIAL chat illimit� dans ta r�g!
no save
Assistance
Achat
News

Forum | programmation
listes chainées : problemes
balin, le sam. 28 févr. 2009 à 23:42:13
Bonjour,
Je realise un programme, ayant pour but la réalisation d'une liste chainée en c++.
Ce programme comporte deux classe avec cette arborescence :

main.cpp
|__Pile.cpp
|__Pile.h
|__Noeud.cpp
|__Noeud.h

La compilation marche, mais le programme n'affiche rien
Je poste mes fichiers :

/* main.cpp */
#include <iostream>
#include "Pile.h"


using namespace std;

int main()
{
Pile P1 ;
P1.ajouter("Dupond");
P1.inserer("Alfred");
P1.ajouter("Dupont");
P1.inserer("Anette");

P1.afficher();
P1.effacer();
P1.afficher();

return 0 ;
}
/*fin de main.cpp*/

/*Noeud.h*/
#ifndef NOEUD_H_
#define NOEUD_H_

class Noeud {

public:

Noeud();
~Noeud();
void modifierSuivant(Noeud*);
void modifierDonnees(char*);
Noeud *valeurSuivant();
char *valeurDonnees();

private:

Noeud *suivant ;
char *donnee ;

};
#endif


/*fin de Noeud.h*/

/*Noeud.cpp */
#include "Noeud.h"
#include <stdio.h>

Noeud::Noeud() {

suivant = NULL ;
donnee = NULL;

}

Noeud::~Noeud() {
delete suivant ;
delete[] donnee ;
}

void Noeud::modifierSuivant(Noeud *s)
{
suivant = s;
}

void Noeud::modifierDonnees(char* txt)
{
donnee = txt ;
}

Noeud* Noeud::valeurSuivant()
{
return suivant;
}

char* Noeud::valeurDonnees()
{
return donnee;
}

/*fin de Noeud.cpp*/

/*Pile.h*/
#ifndef PILE_H_
#define PILE_H_
#include "Noeud.h"

class Pile {

public:
Pile();
~Pile();

void inserer(char*);
void ajouter(char*);
void afficher();
void effacer();

private:
Noeud *adresse ;
};

#endif
/*fin de Pile.h*/

/*Pile.cpp*/
#include <iostream>
#include <stdio.h>
#include "Pile.h"

Pile::Pile()
{
adresse = NULL ;
}

Pile::~Pile()
{
Noeud *suivant;
while(adresse != NULL)
{

suivant = adresse->valeurSuivant() ;
delete adresse ;
Noeud *adresse; adresse = suivant ;
}
delete adresse ;
}

void Pile::inserer(char* txt)
{
Noeud *suivant, *precedent;
while(adresse != NULL)
{
precedent = adresse ;
suivant = adresse->valeurSuivant() ;
adresse = suivant ;
}

Noeud *N ; N = new Noeud ;
precedent->modifierSuivant(N);
precedent->modifierDonnees(txt);
}

void Pile::ajouter(char* txt)
{
Noeud *N ; N = new Noeud ;
N->modifierSuivant(&(*adresse));
N->modifierDonnees(txt);
}

void Pile::afficher()
{
if (adresse = NULL)
std::cout<< "la pile est vide\n" ;

else while(adresse != NULL)
{
std::cout<< adresse->valeurDonnees()<<"\n" ;
adresse = adresse->valeurSuivant();
}
}

void Pile::effacer()
{
Noeud *suivant;
while(adresse != NULL)
{

suivant = adresse->valeurSuivant() ;
delete adresse ;
Noeud *adresse; adresse = suivant ;
}
}

/*fin de Pile.cpp*/

voila, si vous trouver ce qui cloche je vous serais très reconnaissant. (donnez des explication je veux comprendre ! )Configuration: Code::blocks 8.02
Version Web
Réalisé par RedShift
no save