![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 82
无德皇叔
这个作者很懒,什么都没留下…
展开
-
栈 介绍及简单实现
一、栈介绍 1.1 简单介绍 栈(stack) 是一个有序线性表,只能在表的一端(称为栈顶(top))执行插入和删除操作。最后插入的元素最后一个被删除,所以,栈也称为后进先出(LIFO)或先进后出(FILO)线性表。 入栈(push):表示在栈顶插入一个元素。 出栈(pop):表示从栈顶删除一个元素。 试图对一个空栈执行出栈操作原创 2017-06-24 16:14:48 · 409 阅读 · 0 评论 -
栈 实际应用1 如何使用栈来判定括号是否匹配
一、解答思路 对于给定的表达式,我们可以使用栈来实现括号匹配算法,这个算法在解析器中非常重要。解析器每次读入一个字符,如果字符是一个开分隔符(如(、{、[),就将分隔符压入栈顶,如果是一个闭分隔符(如),},]),就从栈顶弹出元素与闭分隔符进行比较,如果两者匹配就继续解析字符串,如果不匹配就显示匹配错误。如果最后栈不为空,同样是匹配错误。 二、实现算法 算法实现步骤:原创 2017-06-26 09:19:20 · 702 阅读 · 0 评论 -
栈应用2 中缀表达式转后缀表达式
一、表达式定义 1.1 中缀表达式 中缀表达式由一个单一字符或运算符,连接前后两个中缀字符串共同组成 A+B A (A+B)+(C-D) 1.2 前缀表达式 前缀表达式由一个单一字符或运算符,随后是两个前缀表达式共同组成。每个前缀字符串长度大于1,包含一个运算符、第一个操作数和第二个操作数。原创 2017-06-26 09:20:08 · 437 阅读 · 0 评论 -
栈应用2 中缀表达式转后缀表达式
为了简单起见,我们只考虑简单的加减乘除计算 一、算法逻辑 1)从左向右扫描后缀表达式 2)初始化栈 3)遍历表达式,直至扫描完所有字符 4)如果被扫描的字符是一个操作数,将其入栈 5)如果被扫描的字符是运算符,出栈两个元素,计算后,结果入栈,注意首先出栈的是第二个操作数 6 )所有都扫描结原创 2017-06-26 09:20:55 · 422 阅读 · 0 评论 -
栈应用4 计算中缀表达式
应用3中计算的是后缀表达式,需要先将中缀表达式转换为后缀表达式再计算,整个表达式会扫描两次,下面我们实现只扫描一次实现计算中缀表达式。‘ 解决这个问题需要两个栈,一个是操作数栈,一个是运算符栈。 一、算法逻辑 1)创建操作数栈 2)创建运算符栈 我们定义运算操作为操作数栈中弹出两个元素,运算符栈中弹出元素,进行计算后,结果压入操作数栈。 3)扫描中缀表达式原创 2017-06-26 09:21:40 · 777 阅读 · 0 评论