该程序仅限整形数据,其他数据类型将后续跟进。
#include <stdio.h>
#include <stdlib.h>
#define N 3
int stacknum[N] = {0};
int count = 0;
void stackmmi(void);
void printstack(int *p,int stacklen);
void stackpush(int num);
void stackpop(int num);
int main(void)
{
char choose = 0;
int tempnum = 0;
while(1)
{
stackmmi();
printf("Please choose operation:\n");
scanf("%c",&choose);
system("CLS");
switch(choose)
{
case 'a':
case 'A':
stackmmi();
if (count < N)
{
printf("Please input number:\n");
scanf("%d",&tempnum);
stackpush(tempnum);
getch();
}
else
{
printf("Stack is full!\n");
getch();
}
system("CLS");
break;
case 'b':
case 'B':
stackmmi();
if (count > 0)
{
stackpop(tempnum);
getch();
}
else
{
printf("Stack is empty!\n");
getch();
}
system("CLS");
break;
case 'c':
case 'C':
{
printstack(stacknum,count);
getch();
}
break;
case 'd':
case 'D':
{
exit(0);
}
}
}
return 0;
}
void stackmmi(void)
{
printf("*********************************************\n");
printf("* *\n");
printf("* A.PUSH *\n");
printf("* B.POP *\n");
printf("* C.PRINT *\n");
printf("* D.EXIT *\n");
printf("* *\n");
printf("*********************************************\n");
}
void printstack(int *p,int stacklen)
{
if (stacklen == 0)
{
printf("Stack is empty!\n");
return;
}
else
{
int i = 0;
printf("Stack num is:\n");
for(;i < stacklen;i ++)
{
printf("%d ",*p++);
}
}
}
void stackpush(int num)
{
printf("%d is push!\n",num);
stacknum[count++] = num;
}
void stackpop(int num)
{
printf("%d is pop!\n",stacknum[--count]);
stacknum[count] = 0;
}