JavaScript_算法与数据结构之 栈 -> Stack -> Last In First Out

来源:csdn博客 分类: 文章浏览史 发布时间:2021-08-06 20:31:58 最后更新:2021-08-06 浏览:312
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2021-08-06 20:31:58

栈的方法

  1. push(element) :添加一个新元素到栈顶位置.
  2. pop() ∶移除栈顶的元素,同时返回被移除的元素。
  3. peek() :返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)
  4. isEmpty() :如果栈里没有任何元素就返回true,否则返回false。
  5. size() :返回栈里的元素个数。这个方法和数组的length属性很类似。
  6. toString() :将栈结构的内容以字符形式返回.

栈的说明与定义

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈( stack ) ,它是一种受限的线性表,后进先出(LIFO)
其限制是仅允许在,表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
LIFO(last in first out)表示就是后进入的元素,第一个弹出栈空间.类似于自动餐托盘,最后放上的托盘,往往先把拿出去使用.
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。


简单封装的构造函数 -> 栈

function Stack () {
      // 栈中的属性
      this.items = []
      // 1. 将元素压入栈
      // this.push = function () {} // 不推荐
      Stack.prototype.push= function (element) {
        this.items.push(element)
      }
      // 2. 从栈取出元素
      Stack.prototype.pop= function () {
        return this.items.pop()
      }
      // 3. 查看一下栈顶的元素
      Stack.prototype.peek= function () {
        return this.items[this.items.length - 1]
      }
      // 4. 判断栈是否为空
      Stack.prototype.isEmpty= function () {
        return this.items.length === 0
      }
      // 5. 获取栈中元素的个数
      Stack.prototype.size= function () {
        return this.items.length
      }
      // 6. toString 方法
      Stack.prototype.toString= function () {
        return this.items.join(' ')
      }
    }

调用

    let $ = new Stack()
    $.push(20)
    $.push(10)
    $.push(100)
    $.push(1008)
    alert($)
    $.pop()
    $.pop()
    alert($)
    alert($.peek())
    alert($.isEmpty())
    alert($.size())
    console.log($.toString())
    console.log($)

入栈gif图

入栈

出栈gif

在这里插入图片描述

gif图地址 -> 太懒不想搞图

十进制转二进制封装函数

 // 十进制转二进制
    function dec2bin (decNumber) {
      // 1. 定义对象 decNumber
      let stack = new Stack()
      // 2. 循环遍历
      while (decNumber > 0) {
        // 2.1. 获取余数,并放到栈里
        stack.push(decNumber % 2)
        // 2.2. 获取整除后的结果作为下次运算
        decNumber = Math.floor(decNumber / 2)
      }
      // 3. 从栈中取出0和1
      let binaryString = ''
      while (!stack.isEmpty()) {
        binaryString += stack.pop()
      }
      return binaryString
    }
1楼 e
2022-03-20 13:45:57
e
php技术微信