-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathliste.c
104 lines (95 loc) · 2 KB
/
liste.c
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include<stdio.h>
#include<stdlib.h>
/*-----------------------------------------------------------------------------*/
typedef struct Cell{
int donnee;
struct Cell* suivant;
}TypeCellule;
/*-----------------------------------------------------------------------------*/
int SaisieDonnee(){
int donnee;
scanf("%d",&donnee);
return donnee;
}
void AfficheDonnee(int donnee){
printf("%d",donnee);
}
TypeCellule* InsereEnQueue(TypeCellule* L,int donnee){
TypeCellule*p,*nouveau;
nouveau=(TypeCellule*)malloc(sizeof(TypeCellule));
nouveau->donnee=donnee;
nouveau->suivant=NULL;
if(L==NULL)
L=nouveau;
else{
for(p=L;p->suivant!=NULL;p=p->suivant){} //recherche de la dernière cellule
p->suivant=nouveau;
}
return L;
}
TypeCellule* SaisieListe(){
char choix;
int donnee;
/*Déclaration d'une liste vide*/
TypeCellule* L=NULL; // initialisation obligatoire
puts("Voulez vous entrez une donnee");
choix=getchar();
getchar();
while(choix=='o'){
puts("Entrez une donnee");
donnee=SaisieDonnee();
getchar();
L=InsereEnQueue(L,donnee);
puts("Voulez vous continuer?");
choix=getchar();
getchar();
}
return L;
}
int sommeDonnee(TypeCellule*L){
TypeCellule* p;
int somme;
for(p=L;p->suivant!=NULL;p=p->suivant){
somme+=(p->donnee);
}
printf("La somme est %d\n",somme);
return somme;
}
void Affichage(TypeCellule* L){
TypeCellule*p;
p=L;
while(p!=NULL){
AfficheDonnee(p->donnee);
p=p->suivant;
}
puts("");
}
void Liberation(TypeCellule**pL){
TypeCellule*p;
while(*pL!=NULL){
p=*pL;
*pL=(*pL)->suivant;
free(p);
}
*pL=NULL;
}
void adressePremierElement(TypeCellule*L,int n){
TypeCellule*p;
p=L;
if(p==NULL)
puts("NULL");
else
printf("L'adresse du premier element est %p ",n);
}
/*---------------------------------------------------------------------------*/
int main(){
/* Declaration de pointeur sur la tête de liste */
TypeCellule* L=NULL;
int n;
L=SaisieListe();
Affichage(L);
int somme=sommeDonnee(L);
adressePremierElement(L,n);
Liberation(&L);
return 0;
}