特点:后进先出
类似于一个桶.
结构定义:
栈顶初始化为-1
int *data//数据区
int max_size, top_index//栈顶指针下标
入栈:
栈顶指针向上移动一位
出栈:
栈顶指针向下移动一位
表达式求值
两个栈, 一个装数, 一个装符号.
用isdigit()函数分辨他是否为数字0-9
返回值: 是->1 否->0 头文件<ctype.h>
如果运算符栈为空, 或者当前字符的优先级比运算符栈顶运算符优先级高, 应该把运算符加入栈里.
如果运算符栈不为空, 从数字栈中弹出两个数, 通过和运算符栈顶运算符计算出结果, 然后把结果加入到数字栈中.
单调栈
解木板倒水问题.(从栈底到栈顶单调递减)
先输入第i块木板的高度, 然后标记下木板编号, 记录到变量temp里. 接着, temp依次和栈顶元素a比较,
如果a的高度小于等于temp的高度, 则弹出.