4.3. :  111

char pop(ch_stack* stk)
{

return (stk -> s[stk -> top--]);

}

char top(ch_stack* stk)
{

return (stk -> s[stk -> top]);

}

bool empty(const ch_stack* stk)
{

return (stk -> top == EMPTY);

}

bool ?ull(const ch_stack* stk)
{

return (stk -> top == FULL);

}

  ch_stack

 const int max_len = 1000;

enum { EMPTY = -1, FULL = max_len - 1 };

struct ch_stack {

char s[max_len] ;

int top;

};

 struct     ch_stack.    : - s
   top.

 void reset(ch_stack* stk)
{

stk -> top = EMPTY;

}

    .  top  
EMPTY.  ch_stack,     ,  -
,   .

 void push(ch_stack* stk, char )
{

stk -> s[++stk -> top] = c;

}

char pop(ch_stack* stk)
{

return (stk -> s[stk -> top--]);

}