#define SLIMIT 20
typedef int whatever;
typedef struct
{
whatever stackarray[SLIMIT?];
int top;
}stack;
setstack(ps)
/* Sets stack s to empty. */
stack *ps;
{
(*ps).top = ?;
}
empty(ps)
/* Returns true only if stack s is empty. */
stack *ps;
{
return((*ps).top == -1);
}
push(value,ps)
/* Inserts contents of value as
the top entry on stack s.
/*
whatever value;
stack *ps;
{
if((*ps).top == (SLIMIT-1))
overflow(ps);
else
{
(*ps).top = (*ps).top + 1;
(*ps).stackarray[(*ps).top] = value;
}
}
pop(ps,pvalue)
/* Removes the top entry of stack s
and copies its contents into value.
*/
stack *ps;
whatever *pvalue;
{
if(empty(ps))
underflow(ps);
else
{
*pvalue = (*ps).stackarray[(*ps).top];
(*ps).top = (*ps).top - 1;
}
}
whatever item(i,ps)
/* Returns a copy of the ith
entry in stack s. When i is
zero it returns a copy of
the top entry.
*/
stack *ps;
{
return((*ps).stackarray[(*ps).top-i]);
}
overflow(ps)
/* Prints a message if the stack overflows. */
stack *ps;
{
printf("\n stack overflow ");
}