#include <stdio.h>
#include <stdlib.h>
#define MAXBUF 5
void push(int);
int pop(void);
void print_stack(void);
int main(void)
{
int val = 0;
int menu;
do{
printf("\n**** Stack management program ****\n");
printf(" 1:push\n");
printf(" 2:pop\n\n");
printf(" 9:End\n\n");
printf("Select a number ? ");
if (scanf("%d", &menu) != 1) {
menu = 0;
while (getchar() != '\n')
;
}
printf("\n");
switch(menu){
case 1:
printf("Enter a value: ");
scanf("%d", &val);
push(val);
print_stack();
break;
case 2:
val = pop();
printf("You got a number:%d from stack.\n", val);
print_stack();
break;
case 9:
break;
default:
menu = 0;
break;
}
}while(menu != 9);
return 0;
}
int sp = 0;
int buf[MAXBUF];
void push(int f)
{
if (sp < MAXBUF) {
buf[sp++] = f;
}
}
int pop(void)
{
if (sp > 0)
return buf[--sp];
else
return -1;
}
void print_stack(void)
{
int i;
for(i = MAXBUF-1; i >= 0; --i){
i >= sp ? printf(" | |\n") : printf(" |%2d|\n", buf[i]);
}
printf(" +--+\n");
}
/* end */