js 实现数据结构 -- 栈(Stack)

原文:

  在 Javascript 中学习数据结构与算法。

 

概念:

  栈是一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

 

  原理很简单,在数组的基础上限制了行为。

  下面是 js 来实现的一个

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

    // 入栈
    push(item) {
        this.items.push(item);
    }

    // 出栈
    pop() {
        return this.items.pop();
    }

    // 末位元素
    get peek() {
        return this.items[this.items.length - 1];
    }

    // 是否为空栈
    get isEmpty() {
        return !this.items.length;
    }

    // 长度
    get size() {
        return this.items.length;
    }

    // 清空
    clear() {
        this.items = [];
    }

    // 打印数据
    print() {
        console.log(this.items.toString());
    }

}



let s1 = new Stack();
console.log(s1.isEmpty);  // true

s1.push(5);
s1.push(9);

console.log(s1.peek);  // 9
s1.push(1);
console.log(s1.peek);  // 1
console.log(s1.size);  // 3

console.log(s1.isEmpty);  // false

 

转载于:https://www.cnblogs.com/cc-freiheit/p/10435596.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值