home *** CD-ROM | disk | FTP | other *** search
- /* MODUL STACK.C */
- #define NOT_EXTERN /* wird weiter unten erklärt */
- #include "stack.h" /* Modulspezifische Headerdatei */
- #define MAXIMUM 200 /* Stackgrö₧e */
- static int stack[MAXIMUM]; /* Stack static global */
- static int sp = 0; /* Stackpointer - kein Pointer im
- Sinne von C sondern ein Index */
- static int over() /* interne Funktion zum Prüfen
- auf Stack overflow - würde man
- normalerweise wohl nicht als
- Funktion implementieren. */
- {
- return(sp >= MAXIMUM);
- }
-
- void push(x)
- int x;
- {
- error = OK; /* error zurücksetzen */
- if(over()) {
- error = OVER;
- return; }
- else {
- stack[sp++] = x; /* Speichern und sp erhöhen */
- return; }
- }
-
- int pop()
- {
- error = OK;
- if(sp) /* sp ungleich 0, also Wert da */
- return (stack[--sp]); /* sp erniedrigen und Wert holen */
- else
- return (error = EMPTY);
- }
-