核心提示:引言	栈是遵循后进先出(LIFO)的数据存储结构。当然js中的栈也是建立在array基础上的,对array不熟悉的伙伴可以看一下我写的关于arry的博文《array》1.栈的创建function St...
       引言
栈是遵循后进先出(LIFO)的数据存储结构。当然js中的栈也是建立在array基础上的,对array不熟悉的伙伴可以看一下我写的关于arry的博文《javascript基础–array》
1.栈的创建
function Stack(){//声明一个Stack类
    var items = [];//数组存储栈内容
    //push方法用于向栈顶推入新元素
    this.push = function(element){
        items.push(element);
    //pop方法用于弹出栈顶元素
    this.pop = function(){
        return items.pop();
    };
    //peek方法用于返回栈顶元素,栈内容不改变
    this.peek = function(){
        return items[items.length - 1];
    };
    //isEmpty方法用于检验栈是否为空
    this.isEmpty = function(){
        return items.length == 0;
    };
    //size返回栈的长度
    this.size = function(){
        return items.length;
    };
    //clear清除栈所有内容
    this.clear = function(){
        items = [];
    };
    //print打印栈所有内容
    this.print = function(){
        console.log(items.toString());
    };
}
2.栈的使用
var stack = new Stack(); console.log(stack.isEmpty());//true stack.push(5); stack.push(8); console.log(stack.peek());//8 stack.push(11); console.log(stack.size());//3 console.log(stack.isEmpty());//false stack.push(15); stack.pop(); stack.pop(); console.log(stack.size());//2 stack.print();//[5,8]
3.栈的算法实例
十进制转二进制:
function pideBy2(decNumber){
    var remStack = new Stack(),//存储余数
        rem,//每次整除后的余数
        binaryString = '';//最后将返回的二进制字符串
    while(decNumber > 0){
        rem = Math.floor(decNumber % 2);
        remStack.push(rem);
        decNumber = Math.floor(decNumber / 2);
    }
    while(!remStack.isEmpty()){
        binaryString += remStack.pop().toString(); 
    }
    return binaryString;
}
推演:十进制转换为任意进制
function baseConverter(decNumber,base){
    var remStack = new Stack(),//存储余数
        rem,//每次整除后的余数
        baseString = '';//最后将返回的进制字符串
        digits = '0123456789ABCDEF';//超过10变为A
    while(decNumber > 0){
        rem = Math.floor(decNumber % base);
        remStack.push(rem);
        decNumber = Math.floor(decNumber / base);
    }
    while(!remStack.isEmpty()){
        baseString += digits[remStack.pop()]; 
    }
    return baseString;
}
结束语
这是关于学习javascript数据结构和算法的学习总结,相当于把书变薄的一个过程吧!



 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                