简单了解JavaScript数据结构与算法之栈

导读 本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于栈的相关问题,包括了面向过
这篇文章给你带来了关于javascript相关知识主要介绍了栈的相关问题,包括面向过程方法的源代码编写栈和面向对象方法的源代码编写。让我们来看看,希望对你有所帮助。

【相关推荐:javascript视频教程、web前端】

1.认识栈

:(stack)又称堆栈,是一种操作有限的线性表。遵循后进先出(LIFO)

栈顶:限制只插入和删除表尾的线性表,

栈底:限制只插入和删除表头的线性表。

进栈:将新元素插入栈中,又称入栈、入栈或压栈,是将新元素放在栈顶元素上,使其成为新的栈顶元素;

出栈:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素

2.编写面向过程的方法源码


2.1思考

什么是面向过程:

面向过程是解决问题步骤分析出来,

然后用函数实现,

只要一步一步执行调用他可以。


2.2需要实现的方法

  1. push(element)在栈顶添加一个或多个元素
  2. pop()删除钱顶元素,返回删除元素
  3. peek()回到栈顶的元素
  4. isEmpty()判断栈是否空,空是空
  5. clear()清空栈的元素
  6. size()用于返回栈中元素的数量

在实现之前,让我们考虑如何实现它

首先,我们使用数组的方法来实现它,所以我们需要创建它

模拟栈的空数组


2.实现3源码,并调用类别

构建一个类,用数组模拟,

在类中书写各种方法

部分调用数组的方法。

一般来说,它是用类包装的

实现栈模拟的数组方法

class Stack {   constructor()(){        this.item =          push(element)              this.item.push(element)            pop()(){       return this.item.pop()       peek()(){        return this.item[this.item.length                       isEmpty()(){        return this.item.length ===          clear()(){          this.item = size()(){           return this.item.length          Stack类const stack = new Stack()stack.push(4)stack.push(6)console.log( stack.pop())console.log(stack.peek())console.log(stack.isEmpty())console.log(stack.size())

运行结果:


   3.用面向对象的方法写源码


3.1思考

面向对象:

就是将构建问题的事物,分解成几个对象

建立对象不是为了完成某一步,而是为了

在解决问题的过程中描述一件事的描述行为


3.2需要实现的方法

  1. push(element)在栈顶添加一个或多个元素
  2. pop()删除钱顶元素,返回删除元素
  3. peek()回到栈顶的元素
  4. isEmpty()判断栈是否空,空是空
  5. clear()清空栈的元素
  6. size()用于返回栈中元素的数量
  7. toString()以字符串的形式打印栈

在实现这一类时,我们使用对象来模拟栈


3.3源代码及使用类

class Stack {   constructor()(){       this.count=0      this.items =           push(element) {       this.items[this.count]=element      this.count            pop()(){        if(this.isEmpty()return undefined          this.count--       const result=this.items[this.count]       delete this.items[this.count]       return result         peek()(){           if(this.isEmpty()    return undefined                  return this.items[this.count-1]         isEmpty()(){          return this.count===0            }    clear()(){         this.items={}                  this.count=0          }    size()(){        return this.count        toString()()()()()()()(                 )()()()()()()()()()()()()()()()())())()())()())())()()()()())()())()()())())()()())()()()()()())()())())()())()())())())())()())()()()())())()())())()()))()()())())())())()()()))())()())()())()()())())())())())())())())()())())())()))()))()))()))())())()))())))())))))()))))()))()))())))())()))())))()))))())))()))))())))))()))))()))())))())))()))()))))()))()))()))))))()))))))())))()))))()))))()))))()))())))))()))))()))())))))()))))))))()()()))())))))))))())))))))))())))))))))())())()())()))())))))()))))()))))))))())))))))))())))))))))())))))())()))))if(this.isEmpty()return undefined                   let objectString=`${this.items[0]}`          for(let i=1;i<this.count;i ){              objectString=`${objectString},${this.items[i]}`                   return objectString                const stack = new Stack()  stack.push(23)  stack.push(34)  stack.push(80)  console.log( stack.pop())  console.log(stack.peek())  console.log(stack.isEmpty())  console.log(stack.size())  console.log(stack.toString())

使用对象模拟栈时,使用键:值

存储数据,例如this.items[this.count]=element

在这个结构中用this.count记录栈的大小,

当我们向里面插入一个数字时,它被分配count为键

插入值为值。此时需要将this.count .

关于pop()与peek(),toString()所有方法都需要

首先判断栈是否为空,如果为空,则返回undefined。

【相关推荐:javascript视频教程、web前端】

以上是简单的理解JavaScript数据结构与算法之栈的详细内容,更多请关注php中文网其他相关文章!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。2022-06-14 04:28:41

猜你喜欢

最新文章