这里主要就是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;
}