JavaScript中数据结构之栈

作者: a333661d6d6e | 来源:发表于2019-01-16 21:45 被阅读7次

栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈末尾,称作栈顶,另一端称作栈底。在栈里,新元素都靠近栈顶,旧元素就接近栈底。

栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现。
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元 素,必须先拿掉上面的元素。

栈的实现

用数组 dataStore 保存栈内元素,构造函数将其初始化为一个空数组。变量 top 记录 栈顶位置,被构造函数初始化为 0,表示栈顶对应数组的起始位置 0。如果有元素被压入 栈,该变量的值将随之变化。
(欢迎加入我们)

function Stack() {
  this.dataStore = [];
  this.top = 0;
  this.push = push;
  this.pop = pop;
  this.peek = peek;
}

push() 方法:当向栈中压入一个新元素时,需要将其保存在数组中变量 top 所对应的位置,然后将 top 值加 1,让其指向数组中下一个空位置。

function push(element) {
  this.dataStore[this.top++] = element;
}

pop() 方法:与 push() 方法相反——它返回栈顶元素,同时将变量 top 的值减 1

function pop() {
  return this.dataStore[--this.top];
}

peek() 方法:返回数组的第 top-1 个位置的元素,即栈顶元素。如果对一个空栈调用 peek() 方法,结果为 undefined。这是因为栈是空的,栈顶没有任何 元素。
pop() 方法虽然可以访问栈顶的元素,但是调用该方法后,栈顶元素也从栈中被永久性地删除了。peek() 方法则只返回栈顶元素,而不删除它。(加入我们)

function peek() {
  return this.dataStore[this.top-1];
}

length() 方法:通过返回变量 top 值的方式返回栈 内的元素个数

function length() {
  return this.top;
}

clear()方法:将变量 top 的值设为 0,清空栈

function clear() {
  this.top = 0;
}

结语

感谢您的观看,如有不足之处,欢迎批评指正。

获取资料

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:619586920,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

相关文章

  • JavaScript 中的深拷贝和浅拷贝

    JavaScript 内存中的堆和栈 栈(stack):堆是 JavaScript 用来存储静态数据的数据结构。静...

  • 【JS基础进阶】(五)JavaScript栈内存与堆内存

    (一)堆(heap),栈(stack)与队列(queue) 栈数据结构 JavaScript中并没有严格意义上区分...

  • JavaScript中数据结构之栈

    栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈末尾,称作栈顶,另一端称作栈底。在...

  • 「算法归纳」常用数据结构相关

    栈 一个后进先出的数据结构 JavaScript中没有栈,使用Array代替 什么场景下用栈? 场景一 十进制转二...

  • 算法 - 栈类型

    栈 一个后进先出的数据结构 javascript中没有栈,但可以用Array实现栈的所有功能 栈的应用场景 需要后...

  • 一、栈是什么? 一个后进先出的数据结构 JavaScript中没有栈,但是可以使用Array来实现栈的所有功能 代...

  • JavaScript 任意进制转换算法

    这里需要借助 JavaScript 中 栈 这个数据结构,栈的相关知识如下图: 一、创建类[1] 首先需要创建一个...

  • Javascript数据结构之栈

    作者原文:http://hawkzz.com/blog/blog/1515054561771 定义 栈是一种特殊的...

  • JavaScript 数据结构之栈

    一、 认识栈 示意图 栈(stack),是一种受限的线性结构, 特点是:后进先出(LIFO) 只允许在栈顶添加和删...

  • JavaScript数据结构之栈

    总结一下这两天学习js数据结构中的栈 不学不知道,一学吓一跳。可以利用数据结构的思想来实现一些算法,能把原本O(n...

网友评论

    本文标题:JavaScript中数据结构之栈

    本文链接:https://www.haomeiwen.com/subject/aaxgrqtx.html