栈的多种C语言实现(3)

结构体数组实现

引入一个变量,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函数为测试函数,且均省略了对上溢和下溢的检验!

虽然方法较多,但核心思想都是相同的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/737c644c88da765f35dc1b6aee40b6eb.html