home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 05 / c_abc / stack.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-02-13  |  1.2 KB  |  36 lines

  1. /* MODUL STACK.C                                               */
  2. #define NOT_EXTERN            /* wird weiter unten erklärt     */
  3. #include "stack.h"            /* Modulspezifische Headerdatei  */
  4. #define MAXIMUM 200           /* Stackgrö₧e                    */
  5. static int stack[MAXIMUM];    /* Stack static global           */                       
  6. static int sp = 0;            /* Stackpointer - kein Pointer im
  7.                                  Sinne von C sondern ein Index */
  8. static int over()             /* interne Funktion zum Prüfen
  9.                                  auf Stack overflow - würde man
  10.                                  normalerweise wohl nicht als
  11.                                  Funktion implementieren.      */
  12. {                             
  13.   return(sp >= MAXIMUM);    
  14. }
  15.  
  16. void push(x)
  17. int x;
  18.   error = OK;                 /* error zurücksetzen            */
  19.   if(over()) {
  20.     error = OVER;
  21.     return; }
  22.   else {
  23.     stack[sp++] = x;          /* Speichern und sp erhöhen      */
  24.     return; }
  25. }
  26.  
  27. int pop()
  28. {
  29.   error = OK;
  30.   if(sp)                      /* sp ungleich 0, also Wert da   */
  31.     return (stack[--sp]);     /* sp erniedrigen und Wert holen */
  32.   else
  33.     return (error = EMPTY);
  34. }
  35.