#include <stdio.h>
#include <malloc.h>
#define m 10
#define TRUE 1
#define FALSE 0
typedef struct stack
{
int s[m];
int top1;
int top2;
}STACK;
STACK zhan,*p=&zhan;
////////////////////////////////////////////////////////////////////////////////
void initstack(STACK *s)
{
s->top1=-1;
s->top2=m;
}
int push(STACK *s,int x,int i);
int pop(STACK *s,int *x,int i);
////////////////////////////////////////////////////////////////////////////////
void main()
{
int x,i,j;
initstack(p);
printf("input a number,-1---end\n");
scanf("%d",&x);
while(x!=-1)
{
i=x>100?1:2;
push(p,x,i);
scanf("%d",&x);
}
for(j=p->top1;j>=0;j--)
printf("%d ",pop(p,&x,1));
printf("\n");
for(j=p->top2;j<=m-1;j++)
printf("%d ",pop(p,&x,2));
}
////////////////////////////////////////////////////////////////////////////////
int push(STACK *s,int x,int i)
{
if(s->top1+1==s->top2)
return (FALSE);
switch(i)
{
case 1:
s->top1++;
s->s[s->top1]=x;
break;
case 2:
s->top2--;
s->s[s->top2]=x;
break;
default:
return (FALSE);
}
return (TRUE);
}
////////////////////////////////////////////////////////////////////////////////
int pop(STACK *s,int *x,int i)
{
switch(i)
{
case 1:
if(s->top1==-1)
return (FALSE);
*x=p->s[p->top1];
s->top1--;
break;
case 2:
if(s->top2==m)
return (FALSE);
*x=p->s[p->top2];
s->top2++;
break;
default:
return (FALSE);
}
return (*x);
}