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>
typedef struct{
int T[100];
int sommet;
}pile;
void inisialiserP (pile *p)
{
p->sommet=-1;
}
void empiler(pile *p,int e)
{
if(p->sommet==99)
{
printf("la pile est pleine");
}
else
{
p->sommet++;
p->T[p->sommet]=e;
}
}
void depiler(pile *p)
{
if(p->sommet!=-1)
{
p->sommet--;
}
else
{
printf("La pile est vide !");
}
}
int pile_pleine(pile *p )
{
if(p->sommet=p->sommet-1) return 1;
else return 0;
}
int pile_vide(pile *p)
{
if(p->sommet==-1) return 1;
else return 0;
}
void separation(pile *p, pile *p1, pile *p2)
{
int i;
inisialiserP(p1);
inisialiserP(p2);
for(i=0 ;i<p->sommet ;i++)
{
if(p->T[p->sommet]>=0) empiler(p1,p->T[p->sommet]) ;
else empiler(p2,p->T[p->sommet]);
depiler(p);
}
}
main()
{
pile p,p1,p2;
int i,n,e;
inisialiserP(&p1);
inisialiserP(&p2);
inisialiserP(&p);
printf("Donner le nombre des elements a inserer dans la pile: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("t[%d]=",i);
scanf("%d",&e);
empiler(&p,e);
}
printf("---La pile apres inserssion---\n");
for(i=0;i<n;i++)
{
printf("p.T[%d]=%d\n",i,p.T[i]);
}
separation(&p,&p1,&p2);
printf("---Separation---:\n");
printf("la pile p1 qui contient les elements positifs ou nuls de p:\n");
for(i=0;i<p1.sommet;i++)
{
printf("p1.T[%d]=%d \n ",i,p1.T[i]);
}
printf("la pile p2 qui contient les elements negative de p:\n");
for(i=0;i<p2.sommet;i++)
{
printf("p2.T[%d]=%d \n ",i,p2.T[i]);
}
} |
Partager