首页 > 编程语言 > 详细

JavaScript数据结构与算法

时间:2020-03-10 18:16:14      阅读:63      评论:0      收藏:0      [点我收藏+]

JavaScript数据结构与算法

1. 栈结构

数组

  • 我们知道数组是一种线性结构, 并且可以在数组的任意位置插入和删除数据.
  • 但是有时候, 我们为了实现某些功能, 必须对这种任意性加以限制.
  • 而栈和队列就是比较常见的受限的线性结构, 我们先来学习栈结构.

栈(stack),它是一种运算受限的线性表,后进先出(LIFO)

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

2. 栈结构的实现

  1. 栈的常见操作

    • push(element):添加一个新元素到栈顶位置。

    • pop():移除栈顶的元素,同时返回被移除的元素.

    • peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)

    • isEmpty():如果栈里没有任何元素就返回true,否则返回false

    • size():返回栈里的元素个数。这个方法和数组的length属性类似

    • toString():将栈结构的内容以字符形式返回

      // 栈类
      function Stack() {
          // 栈中的属性
          var items = []
      
          // 栈相关的方法
          // 压栈操作
          this.push = function (element) {
              items.push(element)
          }
      
          // 出栈操作
          this.pop = function () {
              return items.pop()
          }
      
          // peek操作
          this.peek = function () {
              return items[items.length - 1]
          }
      
          // 判断栈中的元素是否为空
          this.isEmpty = function () {
              return items.length == 0
          }
      
          // 获取栈中元素的个数
          this.size = function () {
              return items.length
          }
      }

3. 队列

  1. 队列的常见操作

    • enqueue(element):向队列尾部添加一个(或多个)新的项

    • dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素

    • front():返回队列的第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息——与stack类的peek方法类似)

    • isEmpty():如果队列中不包含任何元素,返回true,否则返回false

    • size():返回队列包含的元素个数,与数组的length属性类似

    • toString():将队列的内容,转成字符串形式

      // 自定义队列
      function Queue() {
          var items = []
      
          // 队列操作的方法
          // enter queue方法
          this.enqueue = function (element) {
              items.push(element)
          }
      
          // delete queue方法
          this.dequeue = function () {
              return items.shift()
          }
      
          // 查看前端的元素
          this.front = function () {
              return items[0]
          }
      
          // 查看队列是否为空
          this.isEmpty = function () {
              return items.length == 0
          }
      
          // 查看队列中元素的个数
          this.size = function () {
              return items.length
          }
      }

JavaScript数据结构与算法

原文:https://www.cnblogs.com/oreic/p/12456623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!