void push(stack *st, void *pvalue)
{
if (st->stack_ptr == st->max stack)
printf("Stack %s is full\n", st->stack_name);
else
switch (st->type) {
case INT:
((int *)st->pstack)[st->stack_ptr++] = *(int *)pvalue;
break;
case LONG:
((long *)st->pstack)[st->stack_ptr++] = *(long *)pvalue;
break;
case DOUBLE:
((double *)st->pstack)[st->stack_ptr++] = *(double *)pvalue;
break;
}
}
void *pop(stack *st)
{
if (st->stack_ptr == 0) {
printf("Stack %s is empty\n", st->stack_name);
return 0;
}
switch (st->type) {
case INT:
return &((int *)st->pstack)[-st->stack_ptr];
break;
case LONG:
return &((long *)st->pstack)[-st->stack_ptr];
break;
case DOUBLE:
return &((long *)st->pstack)[-st->stack_ptr];
break;
}
}
/* End of File */