La pile est représentée par une structure:
un tableau représente les valeurs
un entier représente le nombre d'éléments de la pile
-*******************************************************************************/
+*******************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#define LONG_PILE 25
typedef int element;
-typedef struct { int nbre;
- element tab[LONG_PILE];} Pile;
-
+typedef struct {
+ int nbre;
+ element tab[LONG_PILE];
+} Pile;
+
Pile pile_vide(void)
-{ Pile p; p.nbre=0;
+{
+ Pile p;
+ p.nbre = 0;
return p;
}
int est_vide(Pile p)
-{ return p.nbre==0; /* ou return !p.nbre; */
+{
+ return p.nbre == 0; /* ou return !p.nbre; */
}
element sommet(Pile p)
/* ATTENTION: consulter le sommet d'une pile vide n'a pas de sens */
-{ if (est_vide(p)) { printf("Erreur - pile vide\n"); exit(-1); }
- return p.tab[p.nbre-1];
+{
+ if (est_vide(p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ return p.tab[p.nbre - 1];
}
-Pile empiler(element e,Pile p)
-{ if (p.nbre==LONG_PILE) { printf("Erreur - pile pleine\n"); exit(-1); }
-p.tab[p.nbre++]=e;
+
+Pile empiler(element e, Pile p)
+{
+ if (p.nbre == LONG_PILE) {
+ printf("Erreur - pile pleine\n");
+ exit(-1);
+ }
+ p.tab[p.nbre++] = e;
return p;
}
Pile depiler(Pile p)
/* ATTENTION: supprimer le sommet d'une pile vide n'a pas de sens */
-{ if (est_vide(p)) { printf("Erreur - pile vide\n"); exit(-1); }
-p.nbre--;
+{
+ if (est_vide(p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ p.nbre--;
return p;
}
-element depiler2(Pile *p) /* ATTENTION: la pile est modifiée */
-/* ATTENTION: dépiler une pile vide n'a pas de sens */
-{ if (est_vide(*p)) { printf("Erreur - pile vide\n"); exit(-1); }
-return p->tab[p->nbre-- -1];
+element depiler2(Pile * p)
+{ /* ATTENTION: la pile est modifiée */
+ /* ATTENTION: dépiler une pile vide n'a pas de sens */
+ if (est_vide(*p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ return p->tab[p->nbre-- - 1];
}
-/******************************************************************************/
+/******************************************************************************/
int main()
-{Pile p;
- int i;
+{
+ Pile p;
+ int i;
- p=pile_vide();
+ p = pile_vide();
- for (i=0; i<20; i++) p=empiler(i,p);
+ for (i = 0; i < 20; i++)
+ p = empiler(i, p);
- for (i=0; i<25; i++) printf("%d\n",depiler2(&p));
+ for (i = 0; i < 25; i++)
+ printf("%d\n", depiler2(&p));
}
-/********************************************************************/
+/********************************************************************/
/********************************************************************/
/* Implantation contiguë d'un type Pile d'entiers */
/* On rallonge le tableau par realloc quand il est plein */
-/********************************************************************/
+/********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#define LONG_PILE 5
typedef int element;
-typedef struct { int nbre;
- int taille_tab;
- element *tab; } Pile;
-
+typedef struct {
+ int nbre;
+ int taille_tab;
+ element *tab;
+} Pile;
+
Pile pile_vide(void)
-{Pile p; p.nbre=0; p.taille_tab=LONG_PILE;
- p.tab=(element *)calloc(p.taille_tab, sizeof(element));
- return p;
+{
+ Pile p;
+ p.nbre = 0;
+ p.taille_tab = LONG_PILE;
+ p.tab = (element *) calloc(p.taille_tab, sizeof(element));
+ return p;
}
int est_vide(Pile p)
-{return p.nbre==0; /* ou return !p.nbre; */
+{
+ return p.nbre == 0; /* ou return !p.nbre; */
}
element sommet(Pile p)
/* ATTENTION: consulter le sommet d'une pile vide n'a pas de sens */
-{if (est_vide(p)) { printf("Erreur - pile vide\n"); exit(-1); }
- return p.tab[p.nbre-1];
+{
+ if (est_vide(p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ return p.tab[p.nbre - 1];
}
-Pile empiler(element e,Pile p)
-{if (p.nbre==p.taille_tab)
- {printf("pile pleine %d - on la rallonge!\n",p.taille_tab);
- p.taille_tab *=2;
- p.tab=realloc(p.tab, p.taille_tab*sizeof(element));
- }
- p.tab[p.nbre++]=e;
- return p;
+Pile empiler(element e, Pile p)
+{
+ if (p.nbre == p.taille_tab) {
+ printf("pile pleine %d - on la rallonge!\n", p.taille_tab);
+ p.taille_tab *= 2;
+ p.tab = realloc(p.tab, p.taille_tab * sizeof(element));
+ }
+ p.tab[p.nbre++] = e;
+ return p;
}
Pile depiler(Pile p)
/* ATTENTION: supprimer le sommet d'une pile vide n'a pas de sens */
-{if (est_vide(p)) { printf("Erreur - pile vide\n"); exit(-1); }
- p.nbre--;
- return p;
+{
+ if (est_vide(p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ p.nbre--;
+ return p;
}
-element depiler2(Pile *p) /* ATTENTION: la pile est modifiée */
-/* ATTENTION: dépiler une pile vide n'a pas de sens */
-{if (est_vide(*p)) { printf("Erreur - pile vide\n"); exit(-1); }
- return p->tab[p->nbre-- -1];
+element depiler2(Pile * p)
+{ /* ATTENTION: la pile est modifiée */
+ /* ATTENTION: dépiler une pile vide n'a pas de sens */ if (est_vide(*p)) {
+ printf("Erreur - pile vide\n");
+ exit(-1);
+ }
+ return p->tab[p->nbre-- - 1];
}
-/********************************************************************/
+
+/********************************************************************/
int main()
-{Pile p;
- int i;
+{
+ Pile p;
+ int i;
- p=pile_vide();
+ p = pile_vide();
- for (i=0; i<20; i++) p=empiler(i,p);
+ for (i = 0; i < 20; i++)
+ p = empiler(i, p);
- for (i=0; i<25; i++) printf("%d\n",depiler2(&p));
+ for (i = 0; i < 25; i++)
+ printf("%d\n", depiler2(&p));
}
-/********************************************************************/
+/********************************************************************/
#define LONG_FILE 25
typedef int element;
-typedef struct { int tete;
- int queue;
- element tab[LONG_FILE]; } File;
-
+typedef struct {
+ int tete;
+ int queue;
+ element tab[LONG_FILE];
+} File;
+
File file_vide(void)
-{ File f={0,0}; /* f.tete=f.queue=0 */
+{
+ File f = { 0, 0 }; /* f.tete=f.queue=0 */
return f;
}
-int est_vide(File f) { return f.tete==f.queue; }
+int est_vide(File f)
+{
+ return f.tete == f.queue;
+}
-int est_pleine(File f) { return (f.queue+1)%LONG_FILE==f.tete; }
+int est_pleine(File f)
+{
+ return (f.queue + 1) % LONG_FILE == f.tete;
+}
element tete(File f)
/* ATTENTION: consulter la tête d'une File vide n'a pas de sens */
-{ if (est_vide(f)) { printf("Erreur - file vide\n"); exit(-1); }
-return f.tab[f.tete];
+{
+ if (est_vide(f)) {
+ printf("Erreur - file vide\n");
+ exit(-1);
+ }
+ return f.tab[f.tete];
}
-File enfiler(element e,File f)
-{ if (est_pleine(f)) { printf("Erreur - file pleine\n"); exit(-1); }
- f.tab[f.queue]=e; f.queue=(f.queue+1)%LONG_FILE;
+
+File enfiler(element e, File f)
+{
+ if (est_pleine(f)) {
+ printf("Erreur - file pleine\n");
+ exit(-1);
+ }
+ f.tab[f.queue] = e;
+ f.queue = (f.queue + 1) % LONG_FILE;
return f;
}
File defiler(File f)
/* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
-{ if (est_vide(f)) { printf("Erreur - file vide\n"); exit(-1); }
- f.tete=(f.tete+1)%LONG_FILE;
+{
+ if (est_vide(f)) {
+ printf("Erreur - file vide\n");
+ exit(-1);
+ }
+ f.tete = (f.tete + 1) % LONG_FILE;
return f;
}
-element defiler2(File * f) /*ATTENTION: la File est modifiée */
-/* ATTENTION: défiler une File vide n'a pas de sens */
-{ element e;
- if (est_vide(*f)) { printf("Erreur - file vide\n"); exit(-1); }
-e=f->tab[f->tete];
- f->tete=(f->tete+1)%LONG_FILE;
+element defiler2(File * f)
+{ /*ATTENTION: la File est modifiée */
+ /* ATTENTION: défiler une File vide n'a pas de sens */ element e;
+ if (est_vide(*f)) {
+ printf("Erreur - file vide\n");
+ exit(-1);
+ }
+ e = f->tab[f->tete];
+ f->tete = (f->tete + 1) % LONG_FILE;
return e;
}
-/*************************************************************************/
+/*************************************************************************/
int main()
-{File p;
- int i;
+{
+ File p;
+ int i;
- p=file_vide();
+ p = file_vide();
- for (i=0; i<20; i++) p=enfiler(i,p);
+ for (i = 0; i < 20; i++)
+ p = enfiler(i, p);
- for (i=0; i<25; i++) printf("%d\n",defiler2(&p));
+ for (i = 0; i < 25; i++)
+ printf("%d\n", defiler2(&p));
}
-/********************************************************************/
+/********************************************************************/
+++ /dev/null
-/********************************************************************/
-/* Implantation d'une liste triee d'entiers */
-/********************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
-
-typedef int element;
-
-typedef struct cellule {
- element valeur;
- struct cellule *suivant;
-} Cellule, *Liste;
-
-
-Liste ajouter_iter(element e, Liste L)
-{Cellule *pc, *p1=L, *p2=NULL;
-
- pc = (Cellule *)malloc(sizeof(Cellule));
- pc->valeur=e;
- pc->suivant=NULL;
-
- if (!L) /* liste vide */ return pc;
-
- while (p1 && (e >= p1->valeur))
- {p2 = p1;
- p1 = p1->suivant;}
-
- if (!p2) /* insertion en tete */
- {pc->suivant = L;
- L=pc; }
- else /* insertion entre p2 et p1 */
- {p2->suivant = pc;
- pc->suivant = p1; }
-
- return L;
-}
-
-
-int longueur_iter(Liste L)
-{
- return 0; /* ... */
-}
-
-
-int longueur_rec(Liste L)
-{
- /* ... */
-}
-
-
-void visualiser_iter(Liste L)
-{
- /* ... */
-}
-
-
-void visualiser_rec(Liste L)
-{
- /* ... */
-}
-
-
-int rechercher_iter(element e, Liste L)
-{
- /* ... */
-}
-
-
-Liste rechercher_rec(element e, Liste L)
-{
- /* ... */
-}
-
-
-Liste ajouter_rec(element e, Liste L)
-{
- /* ... */
-}
-
-
-Liste supprimer_iter(element e, Liste L)
-{
- /* ... */
-}
-
-Liste supprimer_rec(element e, Liste L)
-{
- /* ... */
-}
-
-
-Liste inverser_iter(Liste L)
-{
- /* ... */
-}
-
-
-Liste inverser_rec(Liste L)
-{
- /* ... */
-}
-
-
-/****************************************************************************/
-int main()
-{
- int x;
- Liste L=NULL;
- scanf("%d",&x);
- L=ajouter_iter(x,L);
- printf("longueur=%d\n",longueur_iter(L));
- visualiser_iter(L);
- /* ... */
-}
-/****************************************************************************/
-
typedef int element;
-typedef struct cellule
-{
- element valeur;
+typedef struct cellule {
+ element valeur;
struct cellule *suivant;
} Cellule, *Pile;
-
Pile pile_vide(void)
{
}
/* la pile n'est pas modifiée */
}
-Pile empiler(element e, Pile p)
+Pile empiler(element e, Pile p)
{
}
{
}
-element depiler2(Pile * p) /*ATTENTION: la pile est modifiée */
-/* ATTENTION: cette opération n'a pas de sens avec une pile vide */
-{
+element depiler2(Pile * p)
+{ /*ATTENTION: la pile est modifiée */
+ /* ATTENTION: cette opération n'a pas de sens avec une pile vide */
}
-
/******************************************************************************/
int main()
-{Pile p;
- int i;
- p=pile_vide();
- for (i=0; i<20; i++) p=empiler(i,p);
- for (i=0; i<25; i++) printf("%d\n",depiler2(&p));}
+{
+ Pile p;
+ int i;
+ p = pile_vide();
+ for (i = 0; i < 20; i++)
+ p = empiler(i, p);
+ for (i = 0; i < 25; i++)
+ printf("%d\n", depiler2(&p));
+}
+
/******************************************************************************/
***********************************************************************/
#include <stdio.h>
#include <stdlib.h>
-
+
typedef int element;
-typedef struct cellule
-{
- element valeur;
- struct cellule *suivant;
+typedef struct cellule {
+ element valeur;
+ struct cellule *suivant;
} Cellule;
-
-typedef struct file
-{
- Cellule *t, *q;
-} File; /* tête queue */
+typedef struct file {
+ Cellule *t, *q;
+} File; /* tête queue */
File file_vide(void)
{
element tete(File f)
/* ATTENTION: consulter la tête d'une File vide n'a pas de sens */
-{
+{
/* la File n'est pas modifiée */
}
-File enfiler(element e,File f)
+File enfiler(element e, File f)
{
}
/* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
{
}
-
-element defiler2(File *f) /* ATTENTION: la File est modifiée */
-/* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
-{
-}
+element defiler2(File * f)
+{ /* ATTENTION: la File est modifiée */
+ /* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
+}
/********************************************************************/
int main()
-{File p;
- int i;
- p=file_vide();
- for (i=0; i<20; i++) p=enfiler(i,p);
- for (i=0; i<25; i++) printf("%d\n",defiler2(&p));}
+{
+ File p;
+ int i;
+ p = file_vide();
+ for (i = 0; i < 20; i++)
+ p = enfiler(i, p);
+ for (i = 0; i < 25; i++)
+ printf("%d\n", defiler2(&p));
+}
+
/********************************************************************/
-
\ No newline at end of file