LISTE CHAINÉE SIMPLE D'ENTIERS

BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009 - 16 déc. 2003 à 18:31
cs_fce Messages postés 1 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 31 janvier 2006 - 31 janv. 2006 à 16:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10741-liste-chainee-simple-d-entiers

cs_fce Messages postés 1 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 31 janvier 2006
31 janv. 2006 à 16:59
Bonjour
j essaies de réaliser une liste chainée en utilisant le language C (turbo C) mais g deux erreurs au nivo de la compilation
Pour commencer jetez svp un coup d'oeuil sur le programme :
#include<stdio.h>
#include<stddef.h>
#include<stdlib.h>
#define Malloc(t) (t *)malloc(sizeof(t))
enum boolean {true, faulse};
typedef struct_noeud //(1)
{ char nom[15];
struct_noeud *suivant;} adh;

adh *creer(char *nom) //(2)
{
adh *tete; tete =NULL;
adh *p;
p=NULL;
p=Malloc(adh);
p->nom= nom;
p->suivant=NULL;
return(p);
}
void inserer(adh *nom)
{
adh *tete;
adh *p1;
adh *p2;
p1=tete; p2=NULL;
while ((p1!= NULL) && (strcmp (nom, p1->nom) >0))
{
p2=p1;
p1=p1->suivant;
}
if (p1==NULL)
p1=creer(nom);
else
{
p2=creer(nom);
p2->suivant=p1;
}
}
void afficher()
{
adh *p;
p=tete;
while(p) prrintf("%s -> %s", p, p->suivant);
}
boolean chercher(char *nom)
{
adh *tete;
while ((tete-> nom != nom) && (tete -> suivant != NULL))
tete=tete-> suivant;
if (tete -> nom == nom)
return(true);
else return(faulse);
}
adh * supprimer(adh *nom)
{
adh *pred, *p; boolean found;
pred=NULL;
p=NULL;
if (tete==NULL) perror("liste vide");
else
{
if (tete-> nom==nom)
{
p=tete; tete=tete->suivant;
free(p);
}
else
{
found = chercher(nom);
if (! found) peror("pas dans la liste");
else
{
pred-> suivant= p-> suivant;
free(p);
}
return(tete);
}
}
}
void main()
{
...
...
}
le compilateur affiche les erreur suivante
' , expected' voir (1)
' declaration syntax error' voir (2)
Svp aidez moi.
je vous remercies d'avance.
misterzinzin Messages postés 112 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 26 janvier 2011 2
25 oct. 2004 à 23:13
bonjour, j'essaye de faire une liste liée en c mais... j'y arrive pas... en fait le compilateur (borland 4.5) me retourne un erreur que je n'arrive pas a resoudre :
Pointer to structure required on left side of -> or ->* in function encode si qq pouvais me dire ou je me suis trompé, ca m'aiderais enormement.

le code est le suivant:

#include <stdio.h>
#include <string.h>
#include


typedef struct _fiche{char nom[25],num[15];struct _fiche*suivant;} fiche;
int menu(void);
void encode(char* nom,char* numero,fiche** debut);
void recherche(char* nom/*,char* numero*/,fiche** debut);
void main(){
int choix;
fiche *debut;
char nom[25],numero[15];
debut=NULL;
printf("\nAdresse de debut: %p\n",&debut);

do{
choix=menu();
switch (choix){
case 1: printf("\nENCODAGE\n");
do {printf("Nom:");fgets(nom,25,stdin);nom[strlen(nom)-1]=0;}
while (nom[0]==0);
do {printf("Numero:");fgets(numero,15,stdin);numero[strlen(numero)-1]=0;}
while (numero[0]==0);
encode(nom,numero,&debut);
break;
case 2: printf("\nRECHERCHE\n");
do {printf("Nom:");fgets(nom,25,stdin);nom[strlen(nom)-1]=0;}
while (nom[0]==0);
/*do {printf("Numero:");fgets(numero,15,stdin);numero[strlen(numero)-1]=0;}
while (numero[0]==0);*/
recherche(nom/*,numero*/,&debut);
break;
default: printf("\nFIN\n");
}
}
while(choix!=3);

}
void encode(char* nom,char* numero,fiche **ptr_debut){
printf("\nJ'encode %s avec le numero %s\ndans la file qui a comme adresse de debut:%p",nom,numero,*ptr_debut);
if (*ptr_debut==NULL) {
*ptr_debut=malloc(sizeof(fiche));
strcpy(*ptr_debut->nom,nom); //L ERREUR SE TROUVE A CETTE LIGNE
}
else{
*ptr_debut->suivant=malloc(sizeof(fiche)); //ET A CETTE LIGNE
}
}
void recherche(char* nom/*,char* numero*/,fiche** debut){
printf("\nJe recherche %s \ndans la file qui a comme adresse de debut:%p",nom,*debut);

}
int menu(){
int lechoix;
printf("\n1>Encoder\n2>Rechercher\n3>Quitter\nVotre choix ");
do scanf("%d",&lechoix);
while ((lechoix>3) && (lechoix<1));
return lechoix;
}
BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009
12 févr. 2004 à 07:53
waou! le triple posting! :O
quanganh Messages postés 4 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 12 février 2004
12 févr. 2004 à 05:58
help me

3.1. Ecriture d’une liste chaînée

Le C++ est un langage modulaire qui permet d’écrire des classes ré-utilisables. Si l’on doit réaliser une liste chaînée d’étudiants, une liste chaînée d’enseignants, etc., il serait peut-être intéressant d’isoler tous les mécanismes de gestion d’une liste chaînée pour pouvoir les réutiliser. C’est ce que nous allons faire. Toute liste chaînée est composée de deux parties :

Les éléments qui constituent les maillons de la liste chaînée. Pour cela, vous devez créer une classe Element.
Le mécanisme de gestion des éléments et des liens entre les éléments que vous stockerez dans une classe Liste.


3.1.1. Ecrire la classe Element

Tout élément d’une liste chaînée est caractérisé par :

son contenu. Si nous souhaitons pouvoir faire des listes d’étudiants, d’enseignants, etc., il faut ne faut pas que ce contenu soit typé. Vous utiliserez donc le type void* qui représente un type quelconque. Vous aurez donc un attribut du type void * contenu ;
le pointeur vers l’élément suivant. Ce pointeur sera donc de type Element *.
3.1.2. Ecrire la classe Liste

Cette classe modélise une liste chaînée d’Elements. Elle est caractérisée par un pointeur sur le premier élément de la liste et un pointeur sur l’élément courant. Cette classe contient toutes les méthodes nécessaires à la gestion d’une liste chaînée d’Elements (Ajouter, Supprimer, FinListe, Premier, Prochain).

3.2. Ecrire la classe ListeEnseignant

Cette classe permettra de stocker l'ensemble des enseignants de l'université. Puisque nous avons défini une classe Liste générique, nous pouvons la réutiliser. Pour cela, vous pouvez et devez considérer que la ListeEnseignant "est une" Liste. Ainsi, grâce à un lien d'héritage, votre classe ListeEnseignant dispose de tous les éléments nécessaires à une gestion d'une liste chaînée. Vous devez rajouter à cette classe tous les éléments qui sont propres à la gestion d'enseignants comme par exemple, ajouter un enseignant dans la liste, supprimer un enseignant de la liste, … plus une méthode de GestionListeEnseignant permettant d'afficher un menu pour le choix entre les différentes fonctionnalités.

3.3. Ecrire la classe ListeUV

3.4. Ecrire la classe Universite

Cette classe devra comprendre :

Une liste d'UV
Une liste d'enseignants
Toutes les méthodes que vous trouverez utiles
Une méthode GestionUniversité contenant le menu permettant d'accéder à la gestion des différentes composantes de la classe (gestion des étudiants, gestion des enseignants…)
3.5. Ecrire le programme principal

Ecrire un programme principal qui permette de créer une université et de lancer la gestion de l'université.
quanganh Messages postés 4 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 12 février 2004
12 févr. 2004 à 05:58
help me

3.1. Ecriture d’une liste chaînée

Le C++ est un langage modulaire qui permet d’écrire des classes ré-utilisables. Si l’on doit réaliser une liste chaînée d’étudiants, une liste chaînée d’enseignants, etc., il serait peut-être intéressant d’isoler tous les mécanismes de gestion d’une liste chaînée pour pouvoir les réutiliser. C’est ce que nous allons faire. Toute liste chaînée est composée de deux parties :

Les éléments qui constituent les maillons de la liste chaînée. Pour cela, vous devez créer une classe Element.
Le mécanisme de gestion des éléments et des liens entre les éléments que vous stockerez dans une classe Liste.


3.1.1. Ecrire la classe Element

Tout élément d’une liste chaînée est caractérisé par :

son contenu. Si nous souhaitons pouvoir faire des listes d’étudiants, d’enseignants, etc., il faut ne faut pas que ce contenu soit typé. Vous utiliserez donc le type void* qui représente un type quelconque. Vous aurez donc un attribut du type void * contenu ;
le pointeur vers l’élément suivant. Ce pointeur sera donc de type Element *.
3.1.2. Ecrire la classe Liste

Cette classe modélise une liste chaînée d’Elements. Elle est caractérisée par un pointeur sur le premier élément de la liste et un pointeur sur l’élément courant. Cette classe contient toutes les méthodes nécessaires à la gestion d’une liste chaînée d’Elements (Ajouter, Supprimer, FinListe, Premier, Prochain).

3.2. Ecrire la classe ListeEnseignant

Cette classe permettra de stocker l'ensemble des enseignants de l'université. Puisque nous avons défini une classe Liste générique, nous pouvons la réutiliser. Pour cela, vous pouvez et devez considérer que la ListeEnseignant "est une" Liste. Ainsi, grâce à un lien d'héritage, votre classe ListeEnseignant dispose de tous les éléments nécessaires à une gestion d'une liste chaînée. Vous devez rajouter à cette classe tous les éléments qui sont propres à la gestion d'enseignants comme par exemple, ajouter un enseignant dans la liste, supprimer un enseignant de la liste, … plus une méthode de GestionListeEnseignant permettant d'afficher un menu pour le choix entre les différentes fonctionnalités.

3.3. Ecrire la classe ListeUV

3.4. Ecrire la classe Universite

Cette classe devra comprendre :

Une liste d'UV
Une liste d'enseignants
Toutes les méthodes que vous trouverez utiles
Une méthode GestionUniversité contenant le menu permettant d'accéder à la gestion des différentes composantes de la classe (gestion des étudiants, gestion des enseignants…)
3.5. Ecrire le programme principal

Ecrire un programme principal qui permette de créer une université et de lancer la gestion de l'université.
quanganh Messages postés 4 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 12 février 2004
12 févr. 2004 à 05:58
help me

3.1. Ecriture d’une liste chaînée

Le C++ est un langage modulaire qui permet d’écrire des classes ré-utilisables. Si l’on doit réaliser une liste chaînée d’étudiants, une liste chaînée d’enseignants, etc., il serait peut-être intéressant d’isoler tous les mécanismes de gestion d’une liste chaînée pour pouvoir les réutiliser. C’est ce que nous allons faire. Toute liste chaînée est composée de deux parties :

Les éléments qui constituent les maillons de la liste chaînée. Pour cela, vous devez créer une classe Element.
Le mécanisme de gestion des éléments et des liens entre les éléments que vous stockerez dans une classe Liste.


3.1.1. Ecrire la classe Element

Tout élément d’une liste chaînée est caractérisé par :

son contenu. Si nous souhaitons pouvoir faire des listes d’étudiants, d’enseignants, etc., il faut ne faut pas que ce contenu soit typé. Vous utiliserez donc le type void* qui représente un type quelconque. Vous aurez donc un attribut du type void * contenu ;
le pointeur vers l’élément suivant. Ce pointeur sera donc de type Element *.
3.1.2. Ecrire la classe Liste

Cette classe modélise une liste chaînée d’Elements. Elle est caractérisée par un pointeur sur le premier élément de la liste et un pointeur sur l’élément courant. Cette classe contient toutes les méthodes nécessaires à la gestion d’une liste chaînée d’Elements (Ajouter, Supprimer, FinListe, Premier, Prochain).

3.2. Ecrire la classe ListeEnseignant

Cette classe permettra de stocker l'ensemble des enseignants de l'université. Puisque nous avons défini une classe Liste générique, nous pouvons la réutiliser. Pour cela, vous pouvez et devez considérer que la ListeEnseignant "est une" Liste. Ainsi, grâce à un lien d'héritage, votre classe ListeEnseignant dispose de tous les éléments nécessaires à une gestion d'une liste chaînée. Vous devez rajouter à cette classe tous les éléments qui sont propres à la gestion d'enseignants comme par exemple, ajouter un enseignant dans la liste, supprimer un enseignant de la liste, … plus une méthode de GestionListeEnseignant permettant d'afficher un menu pour le choix entre les différentes fonctionnalités.

3.3. Ecrire la classe ListeUV

3.4. Ecrire la classe Universite

Cette classe devra comprendre :

Une liste d'UV
Une liste d'enseignants
Toutes les méthodes que vous trouverez utiles
Une méthode GestionUniversité contenant le menu permettant d'accéder à la gestion des différentes composantes de la classe (gestion des étudiants, gestion des enseignants…)
3.5. Ecrire le programme principal

Ecrire un programme principal qui permette de créer une université et de lancer la gestion de l'université.
BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009
16 déc. 2003 à 18:31
cool!
Rejoignez-nous