Rechercher : dans
Par :

Exercice listes chainées

Dernière réponse le 31 mai 2009 à 14:06:49 nerazzurri, le 10 jan 2008 à 20:54:44 
 Signaler ce message aux modérateurs

Bonjour,je suis débutant en c et je voudrais resoudre un petit exercice consiste à afficher un menu comporte 5 opérations [ 1) Ajout 2) Modification 3) Consultation 4) Suppression 0) Quitter ], sur enregistrement sa définition est comme suite [ struct fiche { char nom[25];
char prenom[20]; int age; int code; struct fiche *pSuivant ; }; ] (à l'aide des listes chainées ) , s'il ya quelqu'un qui peut m'aider je serai trés content et merci.

Configuration: Windows XP
Internet Explorer 6.0
borland C++ builder 5.0

Meilleures réponses pour « exercice listes chainées » dans :
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la liste 1....
Listes circulaires (Ring Buffer) VoirListes circulaires Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes circulaires A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion dans...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...

1

sfel, le 10 jan 2008 à 20:57:40

Qu'as-tu réalisé pour l'instant ??

on te corrigera.

L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

2

Doctor C, le 10 jan 2008 à 21:08:21

Je vais quand même pas t'écrire la solution au complet...

as-tu des problèmes spécifiques? par exemple une fonction dont tu n'as aucune idée comment coder?
Echo "Lima Mike Alfa";

Répondre à Doctor C

3

Blyess, le 10 jan 2008 à 21:21:29
  • +1

Slt, j'ai un pbme au niveau du remplissage des champs de l'enregistrement, comment utiliser les listes chainées pour remplir les champs
c-à-d ajouter enregistrement à une liste avec le remplissage de ses chomps

Répondre à Blyess

5

Doctor C, le 10 jan 2008 à 21:38:33

En fait, tu devrais utiliser cette stratégie pour ton programme:

A. Fait toi un menu du genre:

1. Ajouter un enregistrement
2. Modifier un enregistrement
3... etc

B. Lorque l'utilisateur appuie sur 1, tu appelles la fonction Ajouter(); 2 la fonction Modifier(); etc...

Et pour l'ajout d'enregistrement, tu n'as qu'à demander à l'utilisateur d'entrer une à la suite des autres les informations que tu as besoins (nom, prénom, etc.) avec des gets ou des scanf. Une fois que tu as récolté toutes tes données dans des variables, tu te crées une nouvelle occurence de ta structure avec ces informations et tu l'ajoutes dans ta liste.

J'espère avoir été clair et pas trop mélangeant!

si tu as des questions, laisse-toi aller!
Echo "Lima Mike Alfa";

Répondre à Doctor C

4

Blyess, le 10 jan 2008 à 21:32:26
  • +3

Slt, voilà ce que j'était fait , j'ai réalisé seulement l'opération d'ajout mais elle ne fonctionne pas, je ne sais pas ou est le pbme, quand j'execute le pgme il ne teste pas la boucle while

#include <conio.h>
#include <alloc.h>
#include <stdio.h>
struct fiche{
char nom[25];
char prenom[20];
int age;
int code;
struct fiche*pSuivant;
};
void main()
{int choix;
struct fiche*nouveau;
struct fiche*tete;
struct fiche*courant;
tete = NULL;
nouveau=(struct fiche*)malloc(sizeof(struct fiche));
nouveau->pSuivant=tete;
tete=nouveau;



clrscr;
printf(" ************************* Menu *************************\n");
printf(" * ---- *\n");
printf(" * 1) Ajout *\n");
printf(" * 2) Consultation *\n");
printf(" * 3) Modification *\n");
printf(" * 4) Suppression *\n");
printf(" * 0) Quiter *\n");
printf(" * *\n");
printf(" ********************************************************\n");

printf("\nQue voulez-vous faire ? Choisisez entre 1,2,3,4 ou quitter le programme 0: ");
scanf("%d",&choix);
switch (choix)
{
case 1 :{ clrscr;
printf("\n************** Ajout d'une nouvelle personne **************\n");
printf("\n Entrez le Nom, Prenom et l'Age : \n");

courant=tete;
if(tete!=NULL){
while(courant->pSuivant!=NULL){
courant=courant->pSuivant;
nouveau=(struct fiche*)malloc(sizeof(struct fiche));
courant->pSuivant=nouveau;
nouveau->pSuivant=NULL;
printf(" Nom : "); scanf("%s",nouveau->nom[25]);
printf(" Prenom : "); scanf("%s",nouveau->prenom[20]);
printf(" Age : "); scanf("%d",nouveau->age);
nouveau->code++ ;
}
}
};
case 2 :{ clrscr;
break;
}
}
getch();

}

Répondre à Blyess

7

Doctor C, le 10 jan 2008 à 21:53:04

Si je peux me permettre, je n'aime pas trop ton allocation de mémoire!

C'est quoi cette idée d'allouer de la mémoire à un nouveau noeud avant même d'avoir choisi d'en créer un!

En plus, je ne saisis pas ta logique du tout... tu fais quoi? une pile?
je comprend pas pourquoi tu modifies la valeur de la tête avant même que le programme ait afficher le menu.

et pas étonnant que ton while marche pas, tu lui fais vérifier si courant->pSuivant!=NULL ... qui est déjà null...

vraiment, je comprend pas ton code!

Echo "Lima Mike Alfa";

Répondre à Doctor C

13

 Xana, le 31 mai 2009 à 14:06:49

Alor kel solution proposes tu?

Répondre à Xana

6

sfel, le 10 jan 2008 à 21:51:04

Alors pour commencer, tes

printf(" Nom : "); scanf("%s",nouveau->nom[25]);
printf(" Prenom : "); scanf("%s",nouveau->prenom[20]);
printf(" Age : "); scanf("%d",nouveau->age); 


tu peux les mettre avant ton if.

sinon tu as fai un " if(tete!=NULL) "
tu fais pas le "else" ???

dans ta logique, par rapport a ta chaine, où ajoutes-tu ton nouveau (juste voir si tu as bien compris ton analyse, me jete pas de tomates tout de suite ^^)


après il y a 10 mille truc qu'on pourrais te dire, mais je préfère attendre au fur et a mesure, pour que l'analyse soit clair dans ton esprit

L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

8

Blyess, le 10 jan 2008 à 21:59:49

Exactement, et aprés chaque opération en revient au menu, mas pour ne pas compliquer les choses on peut ne pas utiliser les appelles aux fonctions pour chaque opération

Répondre à Blyess

9

lami20j, le 10 jan 2008 à 22:04:21
Répondre à lami20j

11

marissa, le 18 mai 2008 à 18:12:01

J'ai un controle tp et j'ai besoin de savoir la solution de ce exercice:
on veut représenter des polynomes de derés quelconque sous formae de listes chainées.pour cela,on dispose de 2 polynomes P1 et P2 de degrés n et m(n et m etant quelconques)représentés par deux listes chainées linéaires unidirectionnelles.
le travail demandé est d'additionner ces deux polynomes dans un troisiéme.
mercu de me répondre par un e-mail, vite

Répondre à marissa