# Include <stdio. h >#include <iostream> using namespace STD; # define stack_init_size 100 # define stackincrement 10 typedef int selemtype; typedef struct {selemtype * base; selemtype * Top; int stacksize;} stack; // initialize bool initstack (stack & S) {S. base = (selemtype *) malloc (stack_init_size * sizeof (selemtype); // If (! S. base) {exit (-1);} s. top = S. base; S. stacksize = stack_init_size; return true;} // void push (stack & S, selemtype e) {If (S. top-S.base> = S. stacksize) {S. base = (selemtype *) realloc (S. base, (S. stacksize + stackincrement); // If (! S. base) {exit (-1);} s. top = S. base + S. stacksize; S. stacksize + = stackincrement;} * s. top ++ = E; // If the stack overflows if (S. top-S.base> = S. stacksize) {S. top = NULL ;}/// output stack selemtype POP (stack & S) {selemtype E; If (S. top = S. base) Return-1; S. top --; E = * s. top; Return e;} // stack size int stacklength (const stack & S) {return (S. top-S.base) ;}// clear stack void clearstack (stack & S) {While (stacklength (s) {Pop (s );}} // empty stack bool stackempty (const stack & S) {If (S. base = S. top) {return true;} else {return false;} // destroy stack void destroystack (stack & S) {free (S. base); S. base = NULL; S. top = NULL; S. stacksize = 0;} void main () {stack Q; initstack (Q); push (Q, 3); push (Q, 4 ); cout <"stacklength" <stacklength (q) <Endl ;}
C is used, cout is used for output, and C is changed.