Js中的栈

列表是一种最自然的数据组织方式。上一章已经介绍如何使用 List 类将数据组织成一个列

表。如果数据存储的顺序不重要,也不必对数据进行查找,那么列表就是一种再好不过的

数据结构。对于其他一些应用,列表就显得太过简陋了,我们需要某种和列表类似但是更

复杂的数据结构。

栈就是和列表类似的一种数据结构,它可用来解决计算机世界里的很多问题。栈是一种高

效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现。

栈的使用遍布程序语言实现的方方面面,从表达式求值到处理函数调用


4.1 对栈的操作

栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内

的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞

在这一摞盘子的最上面。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。

由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元

素,必须先拿掉上面的元素。

对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用 push() 方法,出

栈使用 pop() 方法。图 4-1 演示了入栈和出栈的过程。




另一个常用的操作是预览栈顶的元素。 pop() 方法虽然可以访问栈顶的元素,但是调用该方

法后,栈顶元素也从栈中被永久性地删除了。 peek() 方法则只返回栈顶元素,而不删除它。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Stack类的实现 实例:数制间的相互转换 假设想将数字n转换为以b为基数的数字,实现转换的算法如下:(1)最高位...
    俗三疯阅读 214评论 0 0
  • Java byte code 的学习意义 为啥要学java bytecode,这就跟你问我已经会python了为...
    shanggl阅读 1,728评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,081评论 25 709
  • Much philosophy exists in many things in life. If we can ...
    秦东魁阅读 564评论 0 0
  • 月 凝结了思念 再回到那天 回望匆匆流年 转眼雪落满天 你 带来了思念 又带走从前 遗忘那些誓言 走过一年一年 雪...
    兰雪之泠阅读 311评论 0 3