添加头文件
声明宏定义
设计数据结构
功能函数声明
具体功能实现
简单调用测试
int main()
{
Stack* stack = creat_stack(15); // 创建容量为15的栈
printf("开始入栈:");
for(int i=0; i<20; i++)
{
printf("入栈%s,",push_stack(stack,i)?"成功":"失败");
printf("栈顶:%d\n",*top_stack(stack));
// 两个printf不能写在一起,函数的参数是从右往左加,若是两个printf写在一起,栈顶函数会先被执行,造成段错误
}
printf("------------------------\n开始出栈:\n");
for(int i=0; i<15; i++)
{
printf("栈顶:%2d,",*top_stack(stack));
printf("出栈:%s\n",pop_stack(stack)?"成功":"失败");
// 若先出栈再看栈顶,最后一个会段错误
// i若加到大于15也会有段错误
}
}
结果
总结
注意:基础还是数组
创建:初始化栈空间、长度、栈顶,最后返回栈
销毁:可以直接释放
入栈:栈非满,在相应位置填上相应数据,返回真
出栈:栈非空,直接移动栈顶,成功返回真
注:出栈可以不用把数据清除,把指针往前移就好了,下次入栈时会将原数据覆盖
栈空:通过栈顶判断
栈满:通过栈顶判断
栈顶:返回其大小