JavaScript 数据结构(二): 栈

JavaScript 数据结构系列目录

JavaScript 数据结构(一): 数组

JavaScript 数据结构(二): 栈

JavaScript 数据结构(三):队列

JavaScript 数据结构(四):双端队列

JavaScript 数据结构(五):链表

JavaScript 数据结构(六):集合

JavaScript 数据结构(七):字典

JavaScript 数据结构(八):散列表

JavaScript 数据结构(九):树

JavaScript 数据结构(十):二叉堆和堆排序

JavaScript 数据结构(十一):图



一、栈的概述

栈是一种遵从 后进先出(LIFO) 原则的一种有序集合

新添加或将删除的元素都保存在栈的同一端,即 栈顶

与栈顶相反的另一端称之为 栈底

通常在栈里,新元素都靠近 栈顶,而旧元素靠近 栈底

二、创建一个基于数组的栈

我们先来创建一个类来表示栈。

class Stack {
   
    constructor () {
   
        this.items = [];
    }
}

在这里,我们需要一种数据结构来保存栈里的数据。这里我们选择数组。

数组允许我们在任何位置添加或删除元素,但由于栈遵循 LIFO 原则,我们需要对元素的插入和删除功能进行限制。

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

1、push 方法

添加一个新元素到栈顶。

因我们使用了数组来保存栈里的元素,所以我们可以在这个方法里面使用数组的 push 来实现。其代码如下:

push(element) {
   
    this.items.push(element);
}

2、pop 方法

移除栈顶的元素。

因栈遵循 LIFO 原则,所以移出去的是最后添加进去的元素。

这里我们可以使用数组里的 pop 方法,其代码如下:

pop() {
   
    this.items.pop();
}

只能使用 push 和 pop 方法添加和删除栈中的元素,这样一来,我们的栈自然就遵从了 LIFO 原则。

此后,我们来为我们的类实现一些额外的辅助方法。

3、seeTop 方法

返回栈顶的元素。

peek() {
   
    return this.items[this.size() - 1];
}

size 方法用来返回栈的长度

4、isEmpty 方法

验证栈内是否为空

isEmpty() {
   
    return this.size(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值