bonjour,
J'essaye de créer une liste chainée en C, pour le moment rien de très compliqué : création de la liste, ajout de "cases" et affichage.
Tout d'abord j'ai créé une structure dans un fichier .h :
Puis pour manipuler plus facilement les pointeurs, j'ai créé un autre type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 typedef struct { int info; struct type_case* suivant; }type_case;
J'ai aussi créé une procédure pour insérer mes cases au bon endroit
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef type_case* pointeur_case;
Mais j'ai des pb lors de la compilation : Warning assignment from incompatible pointer type pour les lignes de code suivantes :
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 void insertion_bonne_place(pointeur_case* adr_liste, int val){ /* variables locales */ pointeur_case ptr_courant; pointeur_case case_precedente; bool case_trouvee= FAUX; /* Création de la nouvelle case */ pointeur_case nouvelle_case=(pointeur_case)malloc(sizeof(type_case)); /*Stockage de l'information */ nouvelle_case->info=val; ptr_courant=*adr_liste; case_precedente=NULL; while((ptr_courant != NULL) && (!case_trouvee)){ if (ptr_courant->info < val){ case_precedente=ptr_courant; ptr_courant = ptr_courant->suivant; }else{ case_trouvee = VRAI; } } if( ptr_courant == NULL){ if (*adr_liste == NULL){ /* liste vide, on a créé la première case */ *adr_liste = nouvelle_case; nouvelle_case->suivant = NULL; }else{ /* la liste n'est pas vide mais la nouvelle case doit être insérée à la fin */ case_precedente->suivant=nouvelle_case; nouvelle_case->suivant=NULL; } }else{ if (case_precedente!=NULL){ /* insertion de la case au bon endroit dans la liste*/ case_precedente->suivant=nouvelle_case; nouvelle_case->suivant=ptr_courant; }else{ /* insertion au tout début , avant la première case */ *adr_liste= nouvelle_case; nouvelle_case->suivant=ptr_courant; } } }
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part ptr_courant = ptr_courant->suivant;, ainsi que toutes les autres qui leur ressemblent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part case_precedente->suivant=nouvelle_case;
J'ai malheureusement une erreur aussi " syntax error at end of input " signalé à la fin de mon main
Si vous pouvez m'aider , ça serait gentil , car la manipulation des listes chainées n'est que la base d'un projet que je dois faire, et j'avoue que je suis mal partie si je ne n'arrive pas à faire des choses simples.
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 #include <stdio.h> #include "fonction.h" int main() { pointeur_case liste; initialisation_liste(&liste); insertion_bonne_place(&liste,2); insertion_bonne_place(&liste,20); insertion_bonne_place(&liste,4); insertion_bonne_place(&liste,1); insertion_bonne_place(&liste,6); afficher_liste(liste); }
Merci d'avance
Partager