Template class written when you learn C as an exercise to C , # include #include #define stack_init_size 100
Template class cstack {public: cstract; ~ cstack (void); public: // ----------- Stack order storage representation -------- ----- static struct _tagstack {t * base; // After the stack configuration
PUBLIC: INT PUSH (Sqstack & S, T E);
INT INITACK (Sqstack & S);
INT POP (Sqstack & S, T & E);
Int stackempty (SQSTACK S);
INT Stacklength (Sqstack S);
Void Gettop (Sqstack S, T & E);
Void ClearsTack (Sqstack & S); Void Destroystack;
Void StackTraverse (Sqstack & S); // Maze Solution Classic Algorithm / Int MazePath (MaztyPe Maze, PostType Start, PostType End);}; Template Cstack :: Cstack (void) {} Template cstack :: ~ cstack (void) {} // Add Stack Template Int Cstack :: Push (Sqstack & S, T E) {IF (S.TOP - S.BASE> = S.Stacksize) // Stack full, add storage {s.base = (t *) realloc (s.stacksize stack_init_size * sizeof (t)); if (s.base == null) Return -1; s.top = s.base s.stacksize; s.stacksize = stack_init_size;} * S.top = E; RETURN 0;} // Initialization stack template int Cstack : : Initstack (Sqstack & s) {s.base = new t [stack_init_size]; if (s.base == null) return -1; s.top = s.base; s.stacksize = stack_init_size; return 0;} // Popped top Template int Cstack :: Pop (Sqstack & S, T & E) {if (S.top == S.Base) / / Stack has empty {return -1;} E = * - -s.top; return 0;} // Decision stack is empty Template int Cstack :: Stackempty (Sqstack S) {if (S.Base == S.top) Return 1; Return 0 }
/ / Clear Stack Template Void Cstack :: CLEARSTACK (Sqstack & S) {T * TMP = S.BASE; while (tmp! = S.top) * TMP = null;}
// Return to the top data Template Void Cstack :: Gettop (Sqstack S, T & E) {if (S.TOP == S.Base) / / Stack is empty Return; E = * (S .top-1);}
// Take the length of the stack Template int Cstack :: StackLENGTH (Sqstack S) {Return (S.TOP-S.BASE);
// Destruction Stack Template Void Cstack :: DestroyStack (Sqstack & S) {S.TOP = S.BASE;} Template Void Cstack :: StackTraverse (Sqstack & s) {INT I = 0; T TMP; INT LEN = stacklength (s); for (; i stack; cstack :: _ tagstack s; stack.initstack s); stack.push (s, "12"); stack.push (s, "24"); stack.push (s, "23"); stack.push (s, "43"); stack.push (S, "565"); stack.push (s, "36"); stack.push (s, "432"); char * tmp = ""; while (! stack.stackempty (s)) {stack. POP (S, TMP); cout << TMP << endl;} cout << "length" << stack.stacklength (s) << endl; stack.push (s, "12"); stack.push (s , "24"); stack.push (s, "23"); stack.push (s, "43"); stack.push (s, "565"); stack.push (s, "36" ); Stack.push (s, "432");
Stack.stackTraverse (s);