Bonjour,
je suis débutant et je fais un petit programme de listes chainées. J'ai un soucis ans la création de la liste. Lorsque j'insère un donnée, il semble qu'il n'y a pas d'erreur mais lorsque je mets ma fonction afficherListe dans le main, ça ne m'affiche pas ma liste alors que si je la mets dans ma fonction insérer, ben là pas de problème j'obtiens ce que je veux.
fichier liste.c
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include "liste.h"
- int inserer(Liste l, int x){
- // création nouveau noeud
- Noeud newNoeud = malloc(sizeof(Noeud));
- if (newNoeud == NULL){
- printf("L'allocation a échoué" );
- exit(1);
- }
- else printf("Allocation OK\n" );
- // Assignation de valeur
- newNoeud->n=x;
- newNoeud->suivant=NULL;
- // Si c'est la première valeur de la liste
- if(l == NULL)
- {
- l=newNoeud;
- }
- else
- {
- Noeud temp=l;
- // Positionnement au dernier noeud
- while(temp->suivant != NULL)
- {
- temp = temp->suivant;
- }
- // Ajout du nouveau noeud
- temp->suivant = newNoeud;
- l = temp;
- }
- //afficherListe(l);
- return 0;
- }
- void afficherListe(Liste liste)
- {
- Noeud tmp = liste;
- /* Tant que l'on n'est pas au bout de la liste */
- while(tmp != NULL)
- {
- /* On affiche */
- printf("%d ", tmp->n);
- /* On avance d'une case */
- tmp = tmp->suivant;
- }
- }
|
fichier main.c
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include "liste.h"
- int main(int argc, char **argv)
- {
- Liste ma_liste = NULL;
- int i;
- for(i=1;i<=10;i++)
- {
- ma_liste = inserer(ma_liste, i);
- }
- afficherListe(ma_liste);
- //supprimerListe(ma_liste);
- system("PAUSE" );
- return 0;
- }
|
Merci d'avance.
Edit : désolé j'ai oublié le prototype avec la déclaration de ma struct
Code :
- typedef struct noeud*Noeud;
- typedef struct noeud
- {
- int n;
- Noeud suivant;
- }*Liste;
-
- int inserer(Liste l, int x);
- void afficherListe(Liste liste);
|
Message édité par alpachinois le 25-01-2009 à 16:27:38