摘要: 栈stack栈是一种后进后出机制,它只允许访问访问一个数据项,即 栈顶(最后插入的数据项)。它有主要的三种操作:push,向栈内压入值;pop,弹出栈顶的值,即返回栈顶的值,并把它从栈内删除;peek,只返回但不删除栈顶。概念很容易理解,无非就像给弹匣压子弹等等这种类比,但是像我这样的新手在刚接触到栈的时候总是很迷茫,认为它很难,其实这只是错觉,主要是因为没有搞清楚栈主要用在那些场景。栈普遍应用于... 阅读全文
posted @ 2009-01-02 22:02 朱煜 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 在实际编程中,有许多定义或者问题本身就具有递归性质.所以我们顺其自然就想到用递归来解决.这样不仅代码少,而且结构清晰.但是问题是我们应该怎样设计递归呢?这确实一个问题,由于许多问题并不是很明显的表现出递归的关系,所有很大一部分需要我们进行推导,从而得出递归关系,有了递归关系,编写代码就相对的比较简单了.首先,我们了解递归算法的特点,所谓的递归,就是把一个大型的复杂的问题层层的转化为一个与原问题相似... 阅读全文
posted @ 2009-01-02 21:58 朱煜 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 看到网上有人说,算法是这样学习的: 对于编程的初学者,可以先通过简单的排序算法了解最简单的ADT线性表的常用操作;然后要重点掌握递归技术,包括递归和递推的相互转换。递归技术非常重要,可以通过递归技术了解ADT栈的操作;接着学习搜索法的初步——回溯法,研究经典问题八皇后问题和走迷宫问题,通过这些经典问题了解深度优先搜索法(DFS)和宽度优先搜索法(BFS)以及ADT栈、ADT队列的操作,要学会利用... 阅读全文
posted @ 2009-01-02 21:38 朱煜 阅读(317) 评论(0) 推荐(0) 编辑