数据结构 -- 栈


栈的方法

  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
   }

文章作者: 神奈川
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 神奈川 !
  目录