Problème Liste chaine
aurel94
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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 ;
}
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:
- Problème Liste chaine
- Liste déroulante excel - Guide
- Chaine tnt gratuite sur mobile - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Chaine radio - Télécharger - Médias et Actualité
Et copie colle ton message d'erreur.
Je vois déjà quelques erreurs (exit(), ...)