Besoin d'aide pour un probleme avec les liste chainees

Signaler
Messages postés
2
Date d'inscription
dimanche 22 février 2009
Statut
Membre
Dernière intervention
22 février 2009
-
Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
-
bonjou à tous.
voici mon probleme. je n'arrive pas à trouver comment chercher le nombre d'occurence dans ma liste chainée
vu que je copie des string d'un ficher et que je les met dans ma liste chainée . tout ca dans une boucle while.
comment est ce que je peux récupérer ma liste à la fin de ma boucle.
svp c'est urgent. je vous remercie d'avance pour votre aide.

2 réponses

Messages postés
2
Date d'inscription
dimanche 22 février 2009
Statut
Membre
Dernière intervention
22 février 2009

à ceux qui veulent m'aider voici mon code. je veux juste savoir comment lire de la liste et chercher les occurences.
je signale que je suis novice en c++ 

#include

#include
<fstream>
#include
<string>
#include<stdio.h>
using
namespace std;
struct

combinaison{
string mot;

int val;
};

typedef
struct liste {

struct combinaison com ;

struct liste *suivant;
}liste; 

int

main(){ string monfichier,t,s;
liste *head =

new liste;
liste *p=
new liste;
head->suivant=
new liste;
p=head->suivant;

s=

"L'arbre est dans ses feuilles marilon marile, l'arbre est dans ses feuilles marilon lonle";ofstream fi(

"toto.txt");

if(!fi.is_open())cout<<
"Impossible d'ouvrir le fichier en écriture !"<<endl;
else

{
fi<<s;
}fi.close();

 

cout<<

"veuillez saisir le nom d'un fichier"<<endl;
cin>>monfichier;

if ( monfichier==
"toto.txt")
//verifier l existance du fichier saisi
{
cout <<
"le fichier existe et il est lisible.\n";
}

else{
cout <<

"le fichier n'existe pas.\n";
system(
"pause");

return 0;
}ifstream f(

"toto.txt");
//ouvrir le fichier en lecture
if(!f.is_open())cout<<
"Impossible d'ouvrir le fichier en lecture !"<<endl;

else
while (!f.eof())
//copier les elements du fichier dans la liste
{
liste *p=
new liste;
p=head->suivant;
liste * k=
new liste;
f>>t;
p->com.mot=t;
p->com.val=1;
cout<com.mot<<
","<com.val<<endl;
p=p->suivant;
}

f.close();

system(

"pause");

return 0;}
Messages postés
14982
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
2 mars 2021
94
Hello,
Voici ce que je ferais:

while (!f.eof()) //copier les elements du fichier dans la liste
{
  f>>t;
  p->com.mot=t;
  p->com.val=1;
  cout<com.mot<<","<com.val<<endl;
  p->suivant=new liste;
   p=p->suivant;
 }

Comme cela, au niveau de f.close(), la liste est bien remplie et le début de la liste est pointé par head.
Ensuite, il ne reste plus qu'à la parcourir...

PS: "Et dans cet oeuf, y'a un oiseau...."

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...