01. Gestione dello stack
Funzioni di push() e pop() implementate in C mediante array.
E' possibile inserire tramite la funzione push() esclusivamente valore positivi
Codice sorgente
#include <stdio.h>
#define MAX_STACK 10000
#define STACK_OK 0
#define STACK_KO -1
int stack[MAX_STACK], stack_i;
int push(int val)
{
int ret;
if (stack_i<MAX_STACK && val>=1){
stack[stack_i]=val;
stack_i++;
ret=STACK_OK;
}
else
ret=STACK_KO;
return ret;
}
int pop()
{
int ret, val;
if (stack_i>0){
stack_i--;
val=stack[stack_i];
ret=val;
}
else
ret=STACK_KO;
return ret;
}
int main()
{
int n, ret;
while(1){
printf("Digitare: \n");
printf(" un numero positivo per caricare lo stack\n");
printf(" 0 per estrarre dallo stack\n");
printf(" -1 per terminare\n");
scanf("%d", &n);
if (n>0){
ret = push(n);
if (ret==STACK_OK)
printf("Inserimento effettuato\n\n");
else
printf("Impossibile effettuare l'operazione (stack overflow)\n\n");
}
else if (n==0){
ret=pop();
if (ret==STACK_KO){
printf("Lo stack e' vuoto\n\n");
}
else{
printf("Valore estratto: %d\n\n", ret);
}
}
else
break;
}
return 0;
}
Esecuzione
Digitare:
un numero positivo per caricare lo stack
0 per estrarre dallo stack
-1 per terminare
55
Inserimento effettuato
Digitare:
un numero positivo per caricare lo stack
0 per estrarre dallo stack
-1 per terminare
66
Inserimento effettuato
Digitare:
un numero positivo per caricare lo stack
0 per estrarre dallo stack
-1 per terminare
0
Valore estratto: 66
Digitare:
un numero positivo per caricare lo stack
0 per estrarre dallo stack
-1 per terminare
0
Valore estratto: 55
Digitare:
un numero positivo per caricare lo stack
0 per estrarre dallo stack
-1 per terminare
0
Lo stack e' vuoto
Digitare:
un numero positivo per caricare lo stack
0 per estrarre dallo stack
-1 per terminare
Sito: 7ecnologie
Sezione: 10. Algoritmi e strutture dati
Capitolo: 02. Strutture lineari dinamiche
Paragrafo: 01. Gestione dello stack
Indice dei capitoli: 00. Risorse - 01. Tipi base - 02. Strutture lineari dinamiche - 03. Alberi e grafi
Indice dei paragrafi: 01. Gestione dello stack