js实现数据结构(一)实现一个栈类(ES5和ES6两种方式)


栈是一种遵从**后进先出(LIFO)**原则的有序集合。新添加的或待删除的元素都保存在栈的 同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底
在这里插入图片描述


1.ES5方法实现“栈”类

我们将创建一个类来表示栈。先声明这个类的构造函数:

    function Stack() {
    
    //各种属性和方法的声明
     }

然后,我们需要一种数据结构来保存栈里的元素。可以选择数组:

    this.dataStore = [];

接下来,要为我们的栈声明一些方法。

top:指针,指向栈顶(和数组的length相等,所以arr[top]没有元素)。
push(element(s)):添加一个(或几个)新元素到栈顶。
pop():移除栈顶的元素,同时返回被移除的元素。
peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返 回它)。
size():返回栈里的元素个数。这个方法和数组的length属性很类似。

注意:
1,这些方法在构造函数外定义可以避免每次实例化的时候方法的重新声明,减少占用内存,
2,在这些方法里,使用this指针是可以访问到构造函数里面的变量的,因为this在实例化的时候,就指向了实例化的新对象,通过新对象调用这些方法的时候,this也会指向这个新对象

ES5实现一个栈类:

function Stack() {
   
  this.dataStore = []; //数组 dataStore 保存栈内元素
  thi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值