begin process at 2012 05 30 03:46:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Liste chainée passée en paramètre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Liste chainée passée en paramètre

dimanche 2 août 2009 à 00:23:15 | Liste chainée passée en paramètre

morayma


J'ai écrit un petit programme qui appelle une procédure qui ajoute des éléments à une liste chainée simple. Mon problème c'est que la liste n'est pas modifiée et à chaque appel de la procédure je trouve la liste vide. Ci-dessous mon programme. Si quelqu'un peut m'aider à voir où se trouve le problème!

**********************************
#include <stdio.h>
#include <stdlib.h>

typedef struct noeud noeud;
struct noeud
{
int info;
struct noeud *suivant;
};

typedef noeud* ptNoeud;

char c;

void ajouter_liste (noeud *tete, int x){
noeud * p;
noeud * p1;

p = tete;
if (p==NULL) {
printf("Tete de la liste");
tete= malloc(sizeof(noeud));
tete->info = x ;
tete->suivant = NULL;

printf("%s%d%s\n","Ajout de ", x, " à la tête");
}
else {
printf("%s%d%s\n","Ajout de ", x, " à la liste");
while (p->suivant != NULL)
{
p = p->suivant ;
}
p1=malloc(sizeof(noeud));;
p1->info = x ;
p1->suivant = NULL ;
p->suivant = p1;
}
}
int main()
{
int v;
ptNoeud q = NULL;

ajouter_liste (q, 3) ;
ajouter_liste (q, 6) ;
ajouter_liste (q, 1) ;
ajouter_liste (q, 2);
printf("%s","Taper un caractère pour continuer...");
scanf("%s", &c);
return 0;
}
***************************************************

No dejes para mañana lo que puedes hacer hoy

dimanche 2 août 2009 à 09:52:51 | Re : Liste chainée passée en paramètre

TychoBrahe

Salut,

C'est tout à fait normal, c'est une histoire de portée des variable. Dans le main tu initialise ta variable q à NULL, or rien ne la modifie et son adresse n'est jamais passée afin qu'elle soit modifiée par effet de bord. Bref, deux solutions :
- Soit tu passe l'adresse de ton pointeur à ta fonction d'ajout. C'est très moche les effets de bords saiLEmal.
- Soit tu fait retourner a ta fonction d'ajout le pointeur vers le début de la liste. De cette manière, si tu lui passe NULL elle vas te retourner l'adresse du nouvel elle, sinon elle retourne ce qu'on lui a passé comme tête.

Un exemple de fonctions de manipulation de listes chaînées est disponible ici :
http://www.cppfrance.com/forum/sujet-AJOUT-ELEMENT-FIN-LISTE-CHAINEE_1302592.aspx

lundi 3 août 2009 à 10:16:24 | Re : Liste chainée passée en paramètre

morayma


Merci, oui je crois que le fait de faire une procédure d'ajout ne me laisse pas la possibilité de retourner quoi que ce soit, je vais donc transformer ma procédure en fonction qui retourne la tête de la liste.

*************************************
No dejes para mañana lo que puedes hacer hoy



Cette discussion est classée dans : tete, p1, liste, ajouter, noeud


Répondre à ce message

Sujets en rapport avec ce message

menu et les fonctions [ par djamine ] bonjour j'aimerais trouver la solution pour un exercice de l'ecolevoila : on désire gérer un tableau contenant une liste de nom pour cela en décide de Liste chaînée, besoin d'aide! [ par mystik007 ] Bonjour, je dois coder un programme qui manipule les listes chaînées, j'aurais besoin d'aide pour les fonction (initialiser la liste, allouerNoeud pou créer une liste à partir d'un arbre [ par morganistic ] bonjour a tous!voila deux structures : une liste et un arbre.je n arrive pas a parcourir un arbre en inserant chaque noeud de l arbre dans une liste.. Trie liste chainée simple [ par angelfire0808 ] Bonjour, voila j'essaye d'apprendre à trier une liste chainée mais j'ai quelques soucis #include#include#include#include<co insertion d'un noeud en premiere position d'une liste d'enfants [ par Cako19 ] Bonjour,J'utilise Visual C++ et MSXML4.0.Je souhaiterais insérer un noeud auparavant cloné au début d'une liste d'enfants et non à la fin comme avec l file en c++ [ par ralou ] salut les amis pour bien comprendre la file et la genericite plus les pointeurs je voulais terminer cet excercice mais vraiment j'ai pas arriver a le problème c++ [ par cricri nature ] Je veux multiplier 2 polynomes p1 et p2. Pour cela, j'ai créer 2 tableaux : tab[] qui stocke les degrés d'un monome et liste_monome[] qui stocke diffé problème multiplication [ par cricri nature ] Je veux multiplier 2 polynomes p1 et p2. Pour cela, j'ai créer 2 tableaux : tab[] qui stocke les degrés d'un monome et liste_monome[] qui stocke diffé Thread au bout du gouffre!!!!!!!!!!!! [ par LENOX8 ] Salut tout le monde, Merci pour toute les infos que vous m' avez donne, mais etant encore debutant je vois pas trop comment implantes les threads ains Listes chainées [ par angelfire0808 ] Bonjour voila voici mon, code j'ai une ereeur de compilation mais je ne comprend pas ;-(l'erreur c'est ici :   " nouveau->suivant=(*tete); ".De plus j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,602 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales