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