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
