bonjour mon but est de créer une liste chainée de noms et les placer a l'ordre alphabétique ;sonc j'ai la tete de la chaine et le pointeur suiv et prec pour placer la structure (element) dans son emplacement , jusqu'ici j'ai pu l'insérer au début et au milieu , mais quand je veux placer un nom a la fin ça beug , regardez le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #include <stdio.h> #include <stdlib.h> #include<string.h> typedef struct p{ char nom[10]; struct p *suivant; }element; insertion(element **tete,char*mot ) { int cmp=0; element *suiv=*tete,*pred=NULL; element *nv=(element*)malloc(sizeof(element)); //initialisation strcpy(nv->nom,mot);nv->suivant=NULL; // si la chaine est vide if (*tete==NULL){*tete=nv;} //sinon else { printf("----------------\n"); while(strcmp(suiv->nom,mot)<0 && suiv!=NULL) { pred=suiv; suiv=suiv->suivant; } //insertion au debut if(pred==NULL){nv->suivant=*tete;*tete=nv;printf("insertion au debut\n");} else { if(suiv==NULL){printf("insertion a la fin ");}//pred->suivant=nv;nv->suivant=NULL;} //si on est a la fin else { printf("au milieu \n"); pred->suivant=nv;nv->suivant=suiv; } } } } int main(void) { int i; char ph[10] ; element *tete=NULL,*po; for(i=0;i<10;i++) { printf("\n entrer un nom : "); gets(ph); insertion(&tete,ph); printf("\n la liste est \n "); po=tete; while(po!=NULL) { printf("%s ",po->nom); po=po->suivant; } } }
Partager