dfs的栈实现

对于dfs的递归版,一是效率不高,二是差错不容易,所以特地学习了,栈实现版本的dfs,总体来说好写很多。 首先定义一个栈,然后找到与最先出发点的所有邻接点,将他们入栈,同时标记这些点已经访问过,然后后面和bfs的队列实现有点像。先是栈顶元素出栈,然后重复和最开始相同的步骤,知道栈空,退出。 u...

2017-12-31 07:12:59

阅读数 1027

评论数 0

goj 1446 判断栈的输出是否合法

这道题开始按照思路是:从输入序列的第一个字符和目标序列的第一个字符比较,如果输入序列的字符和输出目标序列对应不相等,则让其一直入栈,碰到相等的情况就目标序列的下标后移一位,输入序列的下标也后移一位,然后再让后移一位的输出目标序列字符与栈顶比较,如果与它相等的不在栈顶则一定在后面,如果后面也没有则输...

2017-11-22 15:38:52

阅读数 124

评论数 0

51nod 1289 大鱼吃小鱼

这道题确实非常有趣,一直在想着用什么数据结构实现这个算法。最后看了下别人的思路瞬间明白了,原来还能用栈实现。然后总结了一下,好像如果问题涉及到顺序优先的时候应该都可以考虑一下栈。(如计算算数式,就是用栈来实现运算的优先级)。这道题的主要思路是,如果遇到朝向右游的鱼就把它入栈,如果是遇到朝向左的鱼则...

2017-11-12 22:25:39

阅读数 94

评论数 0

计蒜客 加减乘除 带括号(栈实现和二叉树两种实现)

这题我采用的是基于栈的实现方法。我觉得本题的精髓是定义一个混合栈(既可以存数字又可以存符号,这里参考了别人用结构体数组实现的栈方法,后续还能充当队列使用,相当方便)。 大体上的思路是先定义一个混合栈,然后凡是数字后面有符号的都把它入栈。符号方面因为存在优先级的运算顺序,其处理起来和前一道不带括号的...

2017-10-13 00:43:08

阅读数 666

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭