字符串中只含有括号 (),[],<>,{},判断输入的芓符串中括号是否匹配如果括号有互相包含的形式,从内到外必须是<>,(),[],{}例如。输入: [()] 输出:YES而输入([]), ([])都应该输出NO
文件的第一行为一个整數n,表示以下有多少个由括好组成的字符串接下来的n行,每行都是一个由括号组成的长度不超过255的字符串
在输出文件中有N行,每行都昰YES或NO
刚刚学习C语言的时候很多人就写過计算器但是当时写的计算器只能进行一步四则运算;对于一次输入(1+2)*3+4这样的运算则没有办法计算。
本篇博文利用栈这种数据结构实现了支持带括号的表达式求值计算器;
栈有栈底和栈顶指针元素是先进后出;对于栈的操作最主要的是创建、压栈、弹栈;在实现计算器时,我们输入的表达式叫做中缀表达式我们需要将其转为后缀表达式;然后利用后缀表达式求取表达式的值;
创建了两个结构体;LinkList是一个單向链表,保存数据和指向下一个节点的指针(next);LinkStack是栈保存着栈顶指针和计数;
链栈是没有头结点的,将第一个节点数据域置位NULL计數器设为-1;表示栈底;
压栈与前面介绍链表的博文中增加链表节点的方式有差别;增加节点是把链表指针地址传递给子函数,这里是把指針传递给子函数;然后为节点申请空间完成节点入栈;
节点入栈是:节点指针域指向当前的top,然后top指向增加的节点(上移);完成入栈;
pop需要判断栈是否为空;完成数据赋值和计数减一释放节点空间;
输入的表达式的中间结果和最终结果都需要是0-9之间;