Strutturazione di un programma
Si vuole realizzare una piccola libreria per eseguire operazioni su uno stack di interi. Lo stack può essere implementato come un array di interi di lunghezza fissata (ma si usi una costante simbolica definita con #define per indicare questa lunghezza).
Si crei un file stack.c contenente le definizioni delle strutture dati necessarie (suggerimento: servirà almeno un array per memorizzare gli elementi, nonché un modo per sapere quanti elementi sono contenuti nello stack, o un puntatore alla sua testa) e un file stackop.c contenente le definizioni delle seguenti funzioni:
* int push(int) impila un intero nello stack; restituisce 0 se l'operazione è andata a buon fine, oppure -1 in caso di errori (per esempio, non c'è spazio nello stack);
* int pop() toglie l'elemento in cima allo stack e lo restituisce al chiamante; ritorna 0 se lo stack è vuoto;
* int peek() restituisce l'elemento in cima allo stack senza eliminarlo dallo stack; ritorna 0 se lo stack è vuoto;
* int size() restituisce il numero di elementi presenti al momento nello stack;
* int empty() restituisce TRUE se lo stack è vuoto, FALSE altrimenti.
Si abbia cura di definire anche dei file .h contenenti le dichiarazioni e i prototipi corrispondenti ai file .c di cui sopra.
Infine, si scriva un file main.c contenente (ovviamente) una funzione main() che, dopo aver incluso i .h che si sono definiti e quelli di sistema eventualmente necessari, effettui alcune operazioni sullo stack, stampando i risultati e verificando che tutto funzioni come atteso.