JavaScript数据结构与栈实例分析(javascript,web开发)

时间:2024-04-28 16:09:37 作者 : 石家庄SEO 分类 : web开发
  • TAG :

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源码实现,并调用类

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

在类中书写各种方法

部分调用数组的方法。

总的来说就是用类来包装

数组的方法来实现栈的模拟

classStack{constructor(){this.item=[]}push(element){this.item.push(element)}pop(){returnthis.item.pop()}peek(){returnthis.item[this.item.length-1]}isEmpty(){returnthis.item.length===0}clear(){this.item=[]size(){returnthis.item.length}}//实例化Stack类conststack=newStack()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源码及使用类

classStack{constructor(){this.count=0this.items={}}push(element){this.items[this.count]=elementthis.count++}pop(){if(this.isEmpty()){returnundefined}this.count--constresult=this.items[this.count]deletethis.items[this.count]returnresult}peek(){if(this.isEmpty()){returnundefined}returnthis.items[this.count-1]}isEmpty(){returnthis.count===0}clear(){this.items={}this.count=0}size(){returnthis.count}toString(){if(this.isEmpty()){returnundefined}letobjectString=`${this.items[0]}`for(leti=1;i<this.count;i++){objectString=`${objectString},${this.items[i]}`}returnobjectString}}conststack=newStack()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。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:JavaScript数据结构与栈实例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:HTML5属性:margin属性怎么用下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18