js 栈数据结构

栈 和 堆的基本概念

// 栈和堆是两种数据结构,有不同的特性和应用场景。

// 栈是一种遵循后进先出 (LIFO) 的有序集合。新添加或待删除的元素都保存在栈的同一端,这端称为栈顶。
// 相反,另一端称为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
// 比如,图书馆放书的方式或者橱柜里的碗的摆放方式都是典型的栈的实例。
// 栈在编程中也有广泛的应用,如在编程语言的编译器和内存中保存变量、方法调用等。

// 堆则是一种遵循先进先服务的数据结构,常见的实例是人们排队购物。

创建栈的传统方式

// 以下是用传统的JavaScript方式创建一个栈:

function Stack() {
    let items = []; // 使用数组来存储栈内的元素

    // 向栈添加元素的方法
    this.push = function(element){
        items.push(element);
    };

    // 从栈中取出元素的方法
    this.pop = function(){
        return items.pop();
    };
}

let stack = new Stack();
stack.push(5); // 例如,这里向栈中添加了一个元素5

使用ES6语法创建栈

// 使用ES6的类语法,我们可以更简洁地创建同样的栈结构:

class Stack {
    constructor() {
        this.items = []; // 初始化空数组来存储栈内的元素
    }
    
    // 向栈添加元素的方法
    push(element) {
        this.items.push(element);
    }
    
}

栈的实际应用

// 栈的应用非常广泛。在算法中,特别是处理回溯问题时,它被用来存储访问过的任务或路径、撤销的操作。
// 在某些编程语言如Java和C#中,栈被用来存储变量和方法调用。特别是在处理递归算法时,如果栈空间被耗尽,
// 可能会抛出一个栈溢出异常。

posted on 2019-03-29 15:33  完美前端  阅读(253)  评论(0)    收藏  举报

导航