Bonsoir,
les piles/files marche bien comme sa pour savoir si j'ai bien assimilé (les piles/files -> ajout/suppression d'un élément,sommet de pile/file)
PILES Last In First out
Tableau statique: (ajout/suppression en fin de tableau)
Tableau dynamique
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 #include<stdio.h> #include<stdlib.h> #define MAX 50 typedef struct pile{ int taille; int tab[MAX]; }pile; void init(pile *p){ p->taille=0; } void push(pile *p,int val){ if(p->taille!=MAX){ p->tab[p->taille]=val; p->taille++; } } void pop(pile *p) { if(p->taille==0) return; p->taille--; } void affiche(pile p){ int i; for(i=0;i<p.taille;i++) printf("%d\n",p.tab[i]); } int top(pile p){ return p.tab[p.taille]; } int main(void){ pile p; init(&p); push(&p,5); push(&p,6); affiche(p); printf("REMOVE\n"); pop(&p); affiche(p); printf("top=%d\n",top(p)); return 0; }
liste chaînée: (ajout/suppression au début de la liste chaînée)
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 #include<stdio.h> #include<stdlib.h> typedef struct pile{ int taille; int *tab; }pile; void init(pile *p){ p->taille=0; p->tab=NULL; } void push(pile *p,int val){ p->tab=realloc(p->tab,sizeof(int *)*(p->taille+1)); p->tab[p->taille]=val; p->taille++; } void pop(pile *p) { if(p->taille==0) return; p->taille--; } void affiche(pile p){ int i; for(i=0;i<p.taille;i++) printf("%d\n",p.tab[i]); } int top(pile p){ return p.tab[p.taille]; } int main(void){ pile p; init(&p); push(&p,5); push(&p,6); affiche(p); printf("REMOVE\n"); pop(&p); affiche(p); printf("top=%d\n",top(p)); return 0; }
Les FILES First In First Out
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 #include<stdio.h> #include<stdlib.h> typedef struct _pile{ int Elt; struct _pile *suivant; }pile; void init(pile **p){ *p=NULL; } void push(pile **p,int val){ pile *p2; p2=malloc(sizeof(pile)); p2->Elt=val; p2->suivant=*p; *p=p2; } void pop(pile **p){ pile *p2; p2=*p; *p=(*p)->suivant; free(p2); } int top(pile *p){ if(p==NULL) printf("erreur, pile vide"); else{ if(p->suivant==NULL) return p->Elt; while(p->suivant!=NULL){ p=p->suivant; } return p->Elt; } } void affiche(pile *p){ while(p!=NULL){ printf("%d\n",p->Elt); p=p->suivant; } } int main(void){ pile *p; init(&p); push(&p,5); push(&p,3); affiche(p); printf("top=%d\n",top(p)); pop(&p); affiche(p); return 0; }
tableau statique: (ajout fin de tableau, supréssion début de tableau)
tableau dynamique:
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 #include<stdio.h> #include<stdlib.h> #define MAX 50 typedef struct file{ int taille; int tab[MAX]; }file; void init(pile *p){ p->taille=0; } void push(file *p,int val){ if(p->taille!=MAX){ p->tab[p->taille]=val; p->taille++; } } void pop(file *p) { int i; if(p->taille==0) return; for(i=0;i<(p->taille -1);i++){ p->tab[i]=p->tab[i+1]; } p->taille--; } void affiche(file p){ int i; for(i=0;i<p.taille;i++) printf("%d\n",p.tab[i]); } int top(file p){ return p.tab[p.taille]; } int main(void){ file p; init(&p); push(&p,5); push(&p,6); affiche(p); printf("REMOVE\n"); pop(&p); affiche(p); printf("top=%d\n",top(p)); return 0; }
liste chaînée: (ajout au début de la liste, supréssion à la fin de la liste)
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 #include<stdio.h> #include<stdlib.h> typedef struct File{ int taille; int *tab; }file; void init(file *p){ p->taille=0; p->tab=NULL; } void push(file *p,int val){ p->tab=realloc(p->tab,sizeof(int *)*(p->taille+1)); p->tab[p->taille]=val; p->taille++; } void pop(file *p) { int i; if(p->taille==0) return; for(i=0;i<(p->taille -1);i++){ p->tab[i]=p->tab[i+1]; } p->taille--; } void affiche(file p){ int i; for(i=0;i<p.taille;i++) printf("%d\n",p.tab[i]); } int top(file p){ return p.tab[p.taille]; } int main(void){ file p; init(&p); push(&p,5); push(&p,6); affiche(p); printf("REMOVE\n"); pop(&p); affiche(p); printf("top=%d\n",top(p)); return 0; }
Merci d'avance pour votre aide.
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<stdlib.h> #include<stdio.h> typedef struct _file{ int Elt; struct _file *suivant; }file; void init(file **p){ *p=NULL; } void push(file **p,int val){ file *p2=malloc(sizeof(file)); p2->Elt=val; p2->suivant=*p; *p=p2; } void pop(file **p){ if(*p==NULL) return; if((*p)->suivant==NULL) free(*p); file *p2=*p; file *p3=(*p)->suivant; while(p3->suivant!=NULL){ p2=p2->suivant; p3=p3->suivant; } p2->suivant=p3->suivant; free(p3); } int top(file *p){ if(p==NULL) printf("erreur, pile vide"); else{ if(p->suivant==NULL) return p->Elt; while(p->suivant!=NULL){ p=p->suivant; } return p->Elt; } } void affiche(file *p){ while(p!=NULL){ printf("%d\n",p->Elt); p=p->suivant; } } int main(void){ file *p; init(&p); push(&p,5); push(&p,3); affiche(p); printf("top=%d\n",top(p)); pop(&p); printf("REMOVE\n"); affiche(p); return 0; }
Partager