• 栈与队列


    一. JS数据结构实现: 栈和队列
    1). 栈与队列的理解
    栈: 遵循后进先出(LIFO)原则的有序集合。新添加的或是待删除的元素都保存在栈顶,而另一端我们称作栈底。(压栈)
    队列: 遵循先进先出(FIFO)原则的有序集合,队列从尾部添加新元素,从顶部移除元素

    2). 栈与队列的行为
    1. 栈
    push(element): 添加一个或是几个新元素到栈顶
    pop(): 移除栈顶的元素,同时返回被移除元素
    peek(): 返回栈顶的元素,但并不对栈顶的元素做出任何的修改
    size(): 返回栈的元素个数
    isEmpty(): 检查栈内是否有元素,如果有返回true,没有返回false
    clear(): 清除栈里的元素
    2. 队列
    enqueue(element): 向队列尾部添加一个(或是多个)元素。
    dequeue(): 移除队列的第一个元素,并返回被移除的元素。
    front(): 返回队列的第一个元素——最先被添加的也是最先被移除的元素。队列不做任何变动。
    size(): 返回队列的长度。
    isEmpty(): 检查队列内是否有元素,如果有返回true,没有返回false
    clear(): 清除队列里的元素

    ## 3). 自定义栈
     (function (window) {
        
          let items = []
        
          function Stack() {
        
          }
        
          Stack.prototype.push = function (el) {
            items.push(el)
          }
        
          Stack.prototype.pop = function () {
            return items.pop();
          }
        
          Stack.prototype.peek = function () {
            return items[items.length - 1]
          }
        
          Stack.prototype.size = function () {
            return items.length
          }
        
          Stack.prototype.isEmpty = function () {
            return items.length === 0
          }
        
          Stack.prototype.clear = function () {
            items = []
          }
        
          Stack.prototype.toString = function () {
            return items.toString() + ' ' + 'Stack'
          }
        
          window.Stack = Stack
        
        })(window)


    4). 自定义队列
    (function (window) {
        
          let items = []
        
          function Queue() {
        
          }
        
          Queue.prototype.enqueue = function (el) {
            items.push(el)
          }
        
          Queue.prototype.dequeue = function () {
            return items.shift()
          }
        
          Queue.prototype.front = function () {
            return items[0]
          }
        
          Queue.prototype.size = function () {
            return items.length
          }
        
          Queue.prototype.isEmpty = function () {
            return items.length === 0
          }
        
          Queue.prototype.clear = function () {
            items = []
          }
        
          Queue.prototype.toString = function () {
            return items.toString() + ' ' + 'Queue'
          }
        
          window.Queue = Queue
        
        })(window)
        
        
    const obj1 = {}
    const obj2 = {}
    const obj3 = {}
    
    obj1.next = obj2
    obj2.next = obj3
  • 相关阅读:
    json的序列化 与 反序列化
    苹果审核被拒 2.3.10
    iOS基础问答面试
    论坛类应用双Tableview翻页效果实现
    iOS性能调优之Analyze静态分析
    win10 U盘安装ubuntu16.04双系统
    spring boot实战读书笔记1
    使用springBoot搭建REATFul风格的web demo
    es6编写generator报错
    vue开发环境搭建win10
  • 原文地址:https://www.cnblogs.com/baixiaoxiao/p/11061105.html
Copyright © 2020-2023  润新知