这里主要就是push、pop以及top三个函数的编写。可以使用数组模拟出一个栈。
push压入数据:数据存入当前下标,下标移动,便于下次压入;
pop弹出数据:下标移动(反向移动,因为当前下标是push移动得到的空下标,没有数据),输入数据。
#include <stdio.h>
#include <string.h>
#define MAX 100000
static arrtab[MAX];    //定义一个全局变量 arrtab字符数组,模拟存储栈
static arrbuf = 0;    //arrtab数组的下标
void push(int n)
{
   if(arrbuf < MAX)    //检测下标是否溢出
       arrtab[arrbuf++] = n;    
}
int pop(void)
{
    return arrbuf > 0 ? printf("%d\n",arrtab[--arrbuf]) : printf("error\n");//使用三目运算符,返回一个printf
}
int top(void)
{
    return arrbuf > 0 ?  printf("%d\n",arrtab[arrbuf-1]) : printf("error\n");//这里要注意top和pop虽然目前的输出一样,但是的下标变化是不一样的,top是下标减1,但是实际下标不移动
}
int main()
{
    int n;
    char s[6];
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",s);
        if(strcmp(s,"push") == 0)
        {
            int num = 0;
            scanf("%d",&num);
            push(num);
        }
        else if(strcmp(s,"pop") == 0)
        {
            pop();
        }
        else if(strcmp(s,"top") == 0)
        {
            top();
        }
    }
    
    return 0;
}