首页 > 代码库 > JavaScript数据结构与算法——第三章 栈

JavaScript数据结构与算法——第三章 栈

栈:后进先出。栈顶在最后,栈底在最前。新添加的元素和待删除的元素抖保存在栈的末尾。

创建一个栈:

function Stack() {
    var items = []; /*用数组保存栈里的元素*/

    this.push = function(e) {
        items.push(e);
    }

    this.pop = function() {
        return items.pop();
    }

    this.peek = function() {
        return items[length - 1];
    }

    this.isEmpty = function() {
        return items.length == 0;
    }

    this.size = function() {
        return items.length;
    }

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

    this.print = function() {
        console.log(items.toString());
    }

}

使用stack类,实例化一个栈:

var stack= new Stack();/*创建一个空栈*/

/*使用它的方法*/
stack.size();  //0
stack.isEmpty();  //true
stack.push(2);
stack.push(3);
stack.print(); //"2,3"

用栈做什么?

例子:10进制转化成指定的进制数数。

function baseConverter(decNumber,base){
    var stack=new Stack();
    var rem,
        binaryString=‘‘,
        digits=‘0123456789ABCDEF‘;

    while(decNumber>0){
        rem=decNumber%base;
        stack.push(rem);
        decNumber=Math.floor(decNumber/base);
    }

    while(!stack.isEmpty()){
         binaryString+=digits[stack.pop()];
    }

    return binaryString;
}

 

JavaScript数据结构与算法——第三章 栈