Problème Liste chaine

Fermé
aurel94 Messages postés 73 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 1 décembre 2013 - 30 nov. 2013 à 17:59
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 déc. 2013 à 18:42
Bonjour,

Alors voila pour m'entrainer au liste chainée j'ai créer un programme d'exploitation basique de chaine de int avec des fonctions classiques (ajouter en tête , supprimer etc)

Il s'avère que mon compilateur me renvoit plein d'erreur , notamment à cause du fait qu'il ne connait pas la structure de liste chainée (alors que pourtant j'ai créer une structure) . Voila mon programme . Merci de m'aider
#include <stdio.h>
#include <stdlib.h>

typedef struct Element {
int nombre ;
struct Element *suivant ;
} Element ;

Element *initialisation() {
Element *liste = malloc(sizeof(*liste));
Element *element = malloc(sizeof(*element));

if (liste == NULL || element == NULL) {
exit(Erreur d'allocation);
}

element->nombre = 0;
element->suivant = NULL;
liste->premier = element;

return liste;
}

void ajouterEnDebut(Element *liste, int nvNombre) {

/* Création du nouvel élément */

Element *nouveau = malloc(sizeof(*nouveau));

if (liste == NULL || nouveau == NULL) {
exit("Erreur d'allocation");
}
nouveau->nombre = nvNombre;

/* Insertion de l'élément au début de la liste */
nouveau->suivant = liste;
liste = nouveau;
}


void ajouterEnFin(Element *liste, int nvNombre) {

/* On crée un nouvel élément */

Element* nouveau = malloc(sizeof(Element));

/* On assigne la valeur au nouvel élément */
nouveau->nombre = nvNombre;
/* On ajoute en fin, donc aucun élément ne va suivre */

nouveau->suivant = NULL;
/* On parcourt la liste à l'aide d'un pointeur temporaire et on indique que le dernier élément de la liste est relié au nouvel élément */

Element* temp=liste;
while(temp->suivant != NULL) {
temp = temp->suivant;
}
temp->suivant = nouveau;
}

void afficherListe(Element *liste) {
Element *temp = liste;
/* Tant que l'on n'est pas au bout de la liste */
while(temp != NULL) {
/* On affiche */
printf("%d ", temp->nombre);
/* On avance d'une case */
temp = temp->nombre;
}
}

void suppressionEnDebut(Element *liste) {
if (liste == NULL) {
exit("Erreur d'allocation");
}


Element *aSupprimer = liste;
liste = liste->suivant;
free(aSupprimer);
}



int main () {


Element *liste1 ;
initialisation(liste1) ;
ajouterEnDebut(liste1,2) ;
ajouterEnDebut(liste1,1) ;
ajouterEnFin(liste1,3) ;
suppressionEnDebut(liste1) ;
afficherListe(liste1) ;
return 0 ;
}


A voir également:

1 réponse

aurel94 Messages postés 73 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 1 décembre 2013 1
1 déc. 2013 à 15:11
Quelqun pour m'aider ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2013 à 18:42
Si tu veux avoir plus de chances d'avoir un retour, reposte ton code en utilisant la balise
 
.
Et copie colle ton message d'erreur.
Je vois déjà quelques erreurs (exit(), ...)
0