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