美文网首页
2018-08-01 js栈与队列补充

2018-08-01 js栈与队列补充

作者: LilacSun | 来源:发表于2018-08-01 21:56 被阅读0次

栈与队列之js(ts)手写(补充)

interface ObjectT {

  value: string,

}

class Stack {

  private stackContent: ObjectT[]

  private stackTop?: ObjectT

  private objectNumber: number

  constructor(stack:ObjectT[]) {

    this.stackContent = stack || []

    this.objectNumber = this.stackContent.length

    if(this.objectNumber != 0) {

      this.stackTop = this.stackContent[0]

    }

  }

  public push(obj: ObjectT) {

    this.objectNumber++

    for(let i = this.objectNumber-1;i >= 0;i--) {

      if(i == 0) {

        this.stackContent[i] = obj

      }

      else {

        this.stackContent[i] = this.stackContent[i-1]

      }

    }

    this.stackTop = this.stackContent[0]

    console.log(this.stackContent)

    console.log(this.stackTop)

  }

  public pop() {

    if(this.objectNumber > 0) {

      for(let i = 0;i < this.objectNumber-1;i++) {

        this.stackContent[i] = this.stackContent[i+1]

      }

      let result = this.stackTop

      this.stackTop = this.stackContent[0]

      delete this.stackContent[this.objectNumber-1]

      this.objectNumber--

      return result

    }

  }

}

class Queue {

  private queueContent: ObjectT[]

  private queueTop?: ObjectT

  private queueTail?: ObjectT

  private objectNumber: number

  constructor(queue: ObjectT[]) {

    this.queueContent = queue || []

    this.objectNumber = this.queueContent.length

    if(this.objectNumber != 0) {

      this.queueTop = this.queueContent[0]

      this.queueTail = this.queueContent[this.objectNumber-1]

    }

  }

  public push(obj:ObjectT) {

    this.objectNumber++

    for(let i = this.objectNumber-1;i >= 0;i--) {

      if(i == 0) {

        this.queueContent[i] = obj

      }

      else {

        this.queueContent[i] = this.queueContent[i-1]

      }

    }

    this.queueTop = this.queueContent[0]

    this.queueTail = this.queueContent[this.objectNumber-1]

    console.log(this.queueContent)

    console.log(this.queueTop)

    console.log(this.queueTail)

  }

  public pop() {

    if(this.objectNumber > 0) {

      let result = this.queueTail

      delete this.queueContent[this.objectNumber-1]

      this.objectNumber--

      this.queueTail = this.queueContent[this.objectNumber-1]

      console.log(this.queueContent)

      return result

    }



  }

}

相关文章

  • 2018-08-01 js栈与队列补充

    栈与队列之js(ts)手写(补充)

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • JavaScript⑦数组队列

    栈和队列: js中没有专门的栈和队列类型,都是用普通该数组模拟的。 何时: 只要希望按照顺序使用数组元素时 栈: ...

  • js

    栈和队列: js中没有专门的栈和队列类型,都是用普通该数组模拟的。 何时: 只要希望按照顺序使用数...

  • JS7

    栈和队列: js中没有专门的栈和队列类型,都是用普通该数组模拟的。 何时:只要希望按照顺序使用数组元素时 栈:一端...

  • javaScript数组练习等......

    栈和队列: js中没有专门的栈和队列类型,都是用普通该数组模拟的。 何时:只要希望按照顺序使用数组元素时 栈:一端...

  • javascript第七章

    栈和队列: js中没有专门的栈和队列类型,都是用普通该数组模拟的。 何时: 只要希望按照顺序使用数组元...

  • JavaScript第七章

    栈和队列:js中没有专门的栈和队列类型,都是用普通该数组模拟的。何时:只要希望按照顺序使用数组元素时。栈:一段封闭...

  • 数据结构学习 | 队列和栈

    栈 后进先出 栈顶允许插入(压栈)、删除(弹栈) 应用:数制转换数制转换与栈 队列 先进先出 队列头部允许删除,队...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

网友评论

      本文标题:2018-08-01 js栈与队列补充

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