home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
CataniaB
/
teach-act
/
laboratorio
/
lab-19-4-99
/
ese8a.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-05-10
|
1KB
|
80 lines
/* tipo di dato stack di interi:
in questa prima versione, uno stack e' un array di interi,
e viene sempre visto come variabile globale dalle
funzioni (come fatto a lezione).
Ne vedremo altre versioni piu' eleganti */
#include <stdio.h>
#define MAX 10
char stack[MAX];
int sp = 0; /* indice prima posizione libera */
/* provare a rifare l'esercizio usando una struttura */
/* operazioni sullo stack */
int isempty(void); /* determina se lo stack e' vuoto */
void push(int); /* aggiunge in testa */
void pop(void); /* toglie elemento in testa */
int top(void); /* restituisce elemento in testa */
void print(void);
main()
{
/* costruisco lo stack che contiene i seguenti elementi:
1 5 6 3 8 (questa e' la testa) */
push(1);
push(5);
push(6);
push(3);
push(8);
/* stampo lo stack */
print();
/*rimuovo la testa e stampo il nuovo stack*/
pop();
print();
/* rimuovo altri due elementi e stampo elemento in testa*/
pop();
pop();
printf("\nElemento in testa: %d",top());
return 0;
}
int isempty(void)
{
return sp == 0 ;
}
void push(int el)
{
if (sp < MAX)
stack[sp++] = el;
else
printf("\n\nerrore:stack pieno \n\n");
}
void pop(void)
{
if (sp > 0)
--sp;
}
int top(void)
{
return stack[sp-1];
}
void print(void)
{
int i;
printf("\nQuesto e' lo stack: ");
for(i = 0; i < sp ; i++)
printf("%d ",stack[i]);
printf("\n");
}