#include<stdio.h>
#include<stdlib.h>
#define STACK_SIZE 100
#define STACK_ADD 50
typedef struct stack{
int *base;
int *top;
int length;
}stack;
void init(stack *s)
{
s->base=(int *)malloc(sizeof(stack)*STACK_SIZE);
s->top=s->base;
s->length=STACK_SIZE;
}
void push(stack *s,int e)
{
if(s->top-s->base>=s->length){
s->base=(int *)realloc(s->base,sizeof(int)*(s->length+STACK_ADD));
s->top=s->base+s->length;
s->length+=STACK_ADD;
}
*(s->top)++=e;
}
void pop(stack *s)
{
int n;
if(s->top==s->base) ;
n=*(--s->top);
printf("%d/t",n);
}
void main()
{
stack *s=(stack *)malloc(sizeof(stack));
init(s);
push(s,12);
push(s,15);
push(s,18);
pop(s);
pop(s);
push(s,21);
pop(s);
pop(s);
printf("/n");
getchar();
}