Bonjour,
Je trouve un petit problème avec les pointeurs et les listes en C
je réalise un petit programme tout simple qui insère un nouvel élément dans une liste triée.
dans mon exemple, une liste d'éléments triées par ordre croissant des numéros de références:
qu'en pensez vous?
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
60
61
62
63
64 #include <stdio.h> #include <alloc.h> #include <conio.h> typedef struct liste { char nom; int num_ref; liste *suiv; } liste * debut, *courant, *nouveau; char reponse; void insert (char nom, int num_ref) { /*création de la liste*/ debut=liste*malloc(sizeof(liste)); courant=debut; do { clrscr(); printf(" /n entrez le nom"); scanf("%s", courant->nom); printf("/n entrez le numéro de référence"); scanf("%d", courant->num_ref); printf("avez vous un autre élément à saisir? o/n"); reponse=getche(); if (reponse='o' ou 'O') { nouveau=liste*malloc(sizeof(liste)); printf("/n entrez le nom"); printf("/n entrez le numéro de référence"); scanf("%s%d", nouveau->nom, nouveau->num_ref); ref=nouveau->num_ref; /*parcours de la liste*/ courant=debut if (courant->num_ref > ref) /*tester la tête de la liste avec le numéro de référence du nouveau élément*/ /*insertion en tête de liste*/ { nouveau->suivant=debut; debut=nouveau; } else while (courant->suivant!=NULL) { courant=courant->suivant; if (courant->num_ref < ref) /*insérer au milieu*/ { nouveau->suivant=courant->suivant; courant->suivant=nouveau; } } else if (courant->suivant=NULL) { nouveau->suivant=NULL; courant->suivant=nouveau; } }
Merci
Partager