JavaScript数据结构与栈实例分析

今天小编给大家分享一下JavaScript数据结构与栈实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

成都创新互联服务项目包括舞钢网站建设、舞钢网站制作、舞钢网页制作以及舞钢网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,舞钢网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到舞钢省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

JavaScript数据结构与栈实例分析

1.认识栈

:(stack)又名堆栈,它是一种运算受限的线性表。遵循后进先出(LIFO)

栈顶:限定仅在表尾进行插入和删除操作的线性表,

栈底:限定仅在表头进行插入和删除操作的线性表。

进栈:向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;

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

JavaScript数据结构与栈实例分析

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 - 1]
            }
   isEmpty() {
       return this.item.length === 0
            }
   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())

运行结果:

JavaScript数据结构与栈实例分析


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.items[this.count]=element

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

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

插入的值为值。这个时候就需要将this.count++.

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

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

以上就是“JavaScript数据结构与栈实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


网站名称:JavaScript数据结构与栈实例分析
文章路径:http://pwwzsj.com/article/ijigjd.html