
算法之美
文章平均质量分 58
iteye_4479
这个作者很懒,什么都没留下…
展开
-
编写算法与数据结构中存在的小技巧和一些陷阱
1 链表中前驱的重要性。 在链表中,删除一个结点而不导致链表断裂,一个必要条件就是这个结点的前驱和后继能够相连。 然而不是每种数据结构上都保存有前驱指针。 在这种情况下我们可以使用的一个小技巧就是在起点之前再增加一个结点(比如有些链表中的head)。然后把head与head->next一起推进,当head->next正好到达指定结点时,我们想要...原创 2012-04-09 15:22:31 · 100 阅读 · 0 评论 -
三种表达式
表达式:主要由操作数、操作符组成。 中缀表达式:操作符在两个操作数之间的表达式 如:a/(b-c)+d*e 前缀表达式:操作符放在两个操作数之前的表达式 从后往前求值 如:+/a-bc*de 后缀表达式:操作符放在两个操作数之后的表达式(逆波兰表达式)从前往后求值 如:abc-/de*+ 非中缀表达式的求值过程...原创 2012-04-09 20:06:29 · 464 阅读 · 0 评论 -
数据结构之线性表
LinearList.h 注意使用 #pragma once 命令 #pragma once #include <iostream> using namespace std; //陈刚的课件里注释有很多的问题,千万不要引入注释。 template <class T> class LinearList{ public: LinearLis...原创 2012-04-09 20:36:45 · 115 阅读 · 0 评论 -
(转载)栈的一个应用 ---中缀表达式转化为后缀表达式
理论: 表达式的表示形式有中缀、前缀和后缀3中形式。中缀表达式按操作符的优先级进行计算(后面代码实现只包括+、-、*、\,小括号),即数学运算。后缀表达式中只有操作数和操作符。操作符在两个操作数之后。它的计算规则非常简单,严格按照从左到右的次序依次执行每一个操作。每遇到一个操作符,就将前面的两个数执行相应的操作。 由后缀表达式计算中缀表达式原理:计算机处理后缀表达式求值问题是比...原创 2012-04-11 15:39:06 · 158 阅读 · 0 评论 -
递归还是迭代?
在一个算法中,使用递归还是迭代是一件很头痛的事情。总的来说,递归的优点很多,适合一些分治算法的实现,而缺点也很多,比如消耗很多的临时空间,有时候还会因为重叠子问题的存在而降低算法的性能。迭代拥有记忆的功能,不仅能够节省一部分临时空间,而且还可以省去很多子问题求解的麻烦。 值得注意的地方有: 1 一般在树形结构中往下走的话,最好使用迭代,比如堆中的...原创 2012-04-12 13:31:46 · 103 阅读 · 0 评论