/* semplici primitive per la gestione di uno stack utilizzando un array. Il
* tipo di dati gestito e' definito in stack.h */
#include<stdio.h>
#include<stdlib.h>
#include"stack.h"
#define ERR 1
#define OK 0
static stack_type *st;
static unsigned int numel=0, max;
/* inizializzazione */
int initSTACK(unsigned int nmax){
max=nmax;
return (st=malloc(sizeof(stack_type)*nmax))==NULL?-ERR:OK;
}
/* controlla se e' vuoto */
unsigned int isSTACKempty(void){
return !numel;
}
/* controlla se e' pieno */
unsigned int isSTACKfull(void){
return numel==max;
}
/* preleva un elemento dallo stack */
stack_type popSTACK(void){
return st[--numel];
}
/* mette un elemento in cima allo stack */
void pushSTACK(stack_type a){
st[numel++]=a;
}
void destroySTACK(void){
free(st);
}