数据结构了解 -- 栈

@sfsoul 2018-08-06 03:58:26发表于 sfsoul/blog 数据结构

前言

非科班,之前对数据结构不了解。但现在觉得这方面的知识很重要,属于程序员的内功需要修炼。

栈是一种线性存储结构且运算受限的线性表,它的插入和删除运算操作被限制在表的一端,该端称为栈顶,而另外一端则称为栈底。

栈中的数据以后进先出(Last In First Out 即LIFO)方式进出栈。

用JS中的数组方法来实现栈

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

    Stack.prototype = {
        constructor:Stack,
        // 将新增的数据放入栈顶
        push(item){
            this.items.push(item);
        },
        // 删除当前栈顶的数据(会修改原始栈)
        pop(){
            return this.items.pop();
        },
        // 返回当前栈顶的数据(不会修改原始栈)
        peek(){
            return this.items[this.items.length - 1];
        },
        // 判断当前栈是否为空
        isEmpty(){
            return this.items.length > 0 ? false : true
        },
        // 清空当前栈
        clear(){
            this.items = [];
        },
        // 返回当前栈的长度
        size(){
            return this.items.length;
        },
        // 打印出当前栈的值
        print(){
            console.log(this.items.toString())
        }
    }

栈这种数据结构就可以类比于JS中函数的调用栈。

JS实现的数据结构