Langage c
omzyaser
-
jisisv Messages postés 3678 Statut Modérateur -
jisisv Messages postés 3678 Statut Modérateur -
SVP est ce que vous pouvez m'aider:
je doit faire une fonction ajouterlisteordonnée qui permet d'ajouter un element dans une liste chainée ordonnée mais je sais pas ou se trouve le problème(le programme se plante lors de son execution)
/*
*
*inserer dans une liste ordonnée
*
*/
int insertionListeOrd(char *nom,int val){
Personne *p=(Personne *)malloc(sizeof(Personne));
if(p==NULL) return 0;
else{
strcpy(p->nom,nom);
p->val=val;
if(premier==NULL){
p->svt=NULL;
premier=p;
return 1;
}
else{
Personne *p2=premier;
Personne *p3=premier->svt;
while((strcmp(p2->nom,nom)<0)&&(strcmp(nom,p3->nom)>0)){
p2=p2->svt;
p3=p3->svt;
}
p->svt=p3;
p2->svt=p;
}
}
}
je doit faire une fonction ajouterlisteordonnée qui permet d'ajouter un element dans une liste chainée ordonnée mais je sais pas ou se trouve le problème(le programme se plante lors de son execution)
/*
*
*inserer dans une liste ordonnée
*
*/
int insertionListeOrd(char *nom,int val){
Personne *p=(Personne *)malloc(sizeof(Personne));
if(p==NULL) return 0;
else{
strcpy(p->nom,nom);
p->val=val;
if(premier==NULL){
p->svt=NULL;
premier=p;
return 1;
}
else{
Personne *p2=premier;
Personne *p3=premier->svt;
while((strcmp(p2->nom,nom)<0)&&(strcmp(nom,p3->nom)>0)){
p2=p2->svt;
p3=p3->svt;
}
p->svt=p3;
p2->svt=p;
}
}
}
A voir également:
- Langage c
- Langage ascii - Guide
- Langage binaire - Guide
- Langage visual basic - Télécharger - Langages
- Pascal langage - Télécharger - Édition & Programmation
- Langage basic gratuit - Télécharger - Édition & Programmation
1 réponse
Essaye ceci (je n'ai pas tout testé !!)
Johan
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/*
*
*inserer dans une liste ordonnée
*
*/
typedef struct Personne{
struct Personne *svt;
int val;
char *nom;
} Personne;
Personne *insertion(Personne **premier, char *nom, int val){
Personne *p=(Personne *)malloc(sizeof(Personne));
if(NULL == p)
return NULL;
else{
p->nom = nom;
p->val = val;
if(NULL == *premier){
p->svt = NULL;
*premier = p;
return p;
}
else{
Personne *p2 = *premier;
Personne *p3 = (*premier)->svt;
while ( (strcmp(p2->nom,nom)<0) && (NULL != p3) && (strcmp(nom,p3->nom)>0)) {
p2 = p2->svt;
p3 = p3->svt;
}
p->svt=p3;
p2->svt=p;
}
return p;
}
}
int main(int argc, char *argv[]) {
Personne *liste = NULL, *qqun;
qqun = insertion( &liste, "Brian Kernighan", 1942);
qqun = insertion( &liste, "Linus Torvalds", 1969);
qqun = insertion( &liste, "James Gosling", 1955);
if(NULL != qqun) {
printf("%s\n", liste->svt->nom);
// doit afficher "James Gosling"
}
return 0;
}
johand@osiris:~/src/ccm$ gcc -Wall -o 20916919-langage-c -g 20916919-langage-c.c
johand@osiris:~/src/ccm$ ./20916919-langage-c
James Gosling
Johan