栈
码不停Tick
这个作者很懒,什么都没留下…
展开
-
计蒜客 加减乘除 带括号(栈实现和二叉树两种实现)
这题我采用的是基于栈的实现方法。我觉得本题的精髓是定义一个混合栈(既可以存数字又可以存符号,这里参考了别人用结构体数组实现的栈方法,后续还能充当队列使用,相当方便)。大体上的思路是先定义一个混合栈,然后凡是数字后面有符号的都把它入栈。符号方面因为存在优先级的运算顺序,其处理起来和前一道不带括号的方法一样,即若即将入栈的符号的优先级若大于栈内的就入栈,否则就把栈内的元素出栈加入到混合栈,直到栈顶原创 2017-10-13 00:43:08 · 1057 阅读 · 0 评论 -
51nod 1289 大鱼吃小鱼
这道题确实非常有趣,一直在想着用什么数据结构实现这个算法。最后看了下别人的思路瞬间明白了,原来还能用栈实现。然后总结了一下,好像如果问题涉及到顺序优先的时候应该都可以考虑一下栈。(如计算算数式,就是用栈来实现运算的优先级)。这道题的主要思路是,如果遇到朝向右游的鱼就把它入栈,如果是遇到朝向左的鱼则将其大小与栈顶的鱼做比较,如果大于栈顶的鱼则栈顶的鱼出栈,鱼的总数减一直到栈顶的鱼大于向左的鱼或者空栈原创 2017-11-12 22:25:39 · 242 阅读 · 0 评论 -
goj 1446 判断栈的输出是否合法
这道题开始按照思路是:从输入序列的第一个字符和目标序列的第一个字符比较,如果输入序列的字符和输出目标序列对应不相等,则让其一直入栈,碰到相等的情况就目标序列的下标后移一位,输入序列的下标也后移一位,然后再让后移一位的输出目标序列字符与栈顶比较,如果与它相等的不在栈顶则一定在后面,如果后面也没有则输出no。AC代码:#include#include#include#includeus原创 2017-11-22 15:38:52 · 285 阅读 · 0 评论 -
dfs的栈实现
对于dfs的递归版,一是效率不高,二是差错不容易,所以特地学习了,栈实现版本的dfs,总体来说好写很多。首先定义一个栈,然后找到与最先出发点的所有邻接点,将他们入栈,同时标记这些点已经访问过,然后后面和bfs的队列实现有点像。先是栈顶元素出栈,然后重复和最开始相同的步骤,知道栈空,退出。uva 280(水题):#includeusing namespace std;const in原创 2017-12-31 07:12:59 · 8900 阅读 · 0 评论