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

原文:

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

 

概念:

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

 

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

  下面是 js 来实现的一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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

 

posted @   shiweiqianju  阅读(252)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示