阅读 43

数据结构-栈

前言

众所周知,数据结构是计算机的基础,也是重中之中。计算机专业的童鞋们大学肯定都学过,然而大学教材基本上都是使用c语言或者c++来讲解数据结构,对于我们前端的童鞋们来说,并没那么容易理解,加之大学期间阅历有限,很多同学也没意识到数据结构的重要性,学的 也是一知半解。为了方便前端同学理解,大家共同学习的目的,接下来我将使用javascript实现代码,出一个数据结构的专题。我也是边总结边学习,有不当之处,还望大家踊跃指出,(轻点喷,(๑❛ᴗ❛๑) 手动狗头)

栈的特性

“栈(Stack)是一种线性存储结构,它具有如下特点:栈中的数据元素遵守”后进先出”(First In Last Out)的原则,简称FILO结构。限定只能在栈顶进行插入和删除操作。” 如图:

实现思路

通过使用javascript提供的数组实现栈先进后出的特性,同时实现栈的大小,是否为空,添加、删除等基本功能,即可。

代码实现

var Stack = function(){
    /** 保存数据 */
    var array = [];

    /** push 推入栈顶元素 */
    this.push = function(element){
        array.push(element);
    }

    /** pop 推出栈顶元素 */
    this.pop = function(){
        // 删除数组最后一个元素,即栈顶元素,同时返回出栈的元素
        return array.pop();
    }

    /** size 栈的大小 */
    this.size = function(){
        return array.length;
    }
   
    /** peek 查看栈顶元素 */
    this.peek = function(){
        return array[array.length-1];
    }

    /** clear 清空元素 */
    this.clear = function(){
        array = [];
    }

    /** isEmpty 栈是否为空 */
    this.isEmpty = function(){
        return array.length === 0;
    }
   
    /** values 栈的数值 */
    this.values = function(){
        return array;
    }
}
复制代码

以上便是栈的实现,把握栈先进后出的特性是关键,如果同学对于javascript数组自带的api不够了解,请先自行了解下具体的方法。