结构体数组实现
引入一个变量,stop相当于s.top,让代码逻辑简单了不少。
# include <stdio.h>
# define M 100
int s[M];
int stop;
//stop = 0; //外部变量不能赋值吗??
int stackEmpty(void);
void push(int x);
int pop();
int main(void)
{
stop = 0;
printf("stackEmpty - %d\n", stackEmpty());
push(3);
printf("stackEmpty - %d\n", stackEmpty());
push(5);
//printf("pop - %d - %d\n", pop(), pop()); //这是一个未定义行为
printf("pop - %d\n", pop());
printf("pop - %d\n", pop());
printf("stackEmpty - %d\n", stackEmpty());
return 0;
}
int stackEmpty(void)
{
if(stop == 0) {
return 1;
} else {
return 0;
}
}
void push(int x)
{
s[++stop] = x;
}
int pop(void)
{
return s[stop--];
}
上面程序代码中,main函数为测试函数,且均省略了对上溢和下溢的检验!
虽然方法较多,但核心思想都是相同的。