数据结构及应用
那么大圆筒啊
一个菜鸡
展开
-
C语言栈的应用——后缀表达式求值
算法思路 上次已经完成了由中缀表达式转后缀表达式的算法,而后缀表达式的优点就是可以从左至右直接读取,没有算数优先级的考量,所以直接进行运算即可。 该算法需要使用一个栈用来保存操作数,在读取到数字的时候,将数字压入栈中;如果读取到操作符,就弹出栈顶的两个元素,分别为op2和op1(先弹出来的元素为op2),将op1和op2与目前读取到的操作符进行计算,并将结果压回栈中。反复运行直到后缀表达式全部读取完成,此时栈中的结果即后缀表达式的结果。具体过程例后缀表达式12+3-45*2/+,定义一个栈num原创 2021-08-10 20:03:56 · 6266 阅读 · 0 评论 -
C语言栈的应用——中缀表达式转后缀表达式
算法思路将a+b+(c-d)*e转换为后缀表达式,从左向右读取,读取到数字的时候(这里例子里面是字母),就将数字直接添加到后缀表达式中;遇到操作符时,将读取到的操作符与栈中元素进行对比,如果读取的操作符的优先级小于等于栈中的操作符,就将栈中的操作符弹出并添加到后缀表达式中,并且将读取的操作符压入栈中,否则直接将操作符压入栈中。具体转化过程读取到数字a,将数字a添加到postfixList的末端;此时postfixList=['a'](postfixList表示后缀表达式)读取到操作符+,此时原创 2021-08-09 20:58:40 · 1324 阅读 · 0 评论 -
C语言栈的应用——括号匹配问题
算法思路使用一个字符串数组保存括号式。从左向右读取括号式,如果遇到左括号即'(','[','{'就压入栈中,如果遇到右括号即')',']','}'就对栈顶的元素进行对比,如果匹配成功就将栈顶元素弹出。算法实现// 括号匹配_Bool parChecker(){ int length, i; // 定义括号匹配长度 LiStack L; L = initStack(); // 初始化栈; char symbolString[100]; // 使用char原创 2021-08-07 20:55:55 · 5244 阅读 · 3 评论