js 数据结构-栈与队列

/*
【客栈的盘子/月井里的货物,后进先出】
栈顶:最先入口/出口的位置
栈底:最慢最晚出栈的位置
*/

function Stack()
{
    var item = [];

    //推(将货物推入月井)
    this.push = function(e)
    {
        item.push(e);
    }

    //弹(将月井最上方的货物搬出来)
    this.pop = function()
    {
        return item.pop();
    }

    //查(查看月井最上方的货物,但不搬出来)
    this.peek = function()
    {
        return item[item.length - 1];
    }

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

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

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

    //
    this.price = function()
    {
        console.log(item.toString());
    }

    //
    this.toString = function()
    {
        return item.toString();
    }
}

十进制转二进制。任意进制转二进制

/*
十进制转二进制
原理是将一个大于0的整数,每次都除以2并且记录余数,直到余数为0为止。然后将记录余数叠加即为二进制
*/
function divideBy2(decNumber)
{
    var remStack = new Stack();
    var rem;
    var binaryString;

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

    if(!remStack.isEmpty()) return remStack.toString();
}


function baseConverter(decNumer,base)
{
    var remStack = new Stack();
    var rem;
    var binaryString;
    var digits = '0123456789ABCDEF';

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

    if(!remStack.isEmpty()) 
    {
        binaryString += digits[remStack.pop()];
    }

    return binaryString;
}

队列

/*
队列,先进先出
*/
function Queue()
{
    var item = [];

    //
    this.enqueue = function(e)
    {
        item.push(e);
    }

    //shift
    this.dequeue = function()
    {
        return item.shift();
    }

    //
    this.front = function()
    {
        return item[0];
    }

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

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

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

    //
    this.price = function()
    {
        console.log(item.toString());
    }

    //
    this.toString = function()
    {
        return item.toString();
    }
}

 

posted @ 2016-06-30 09:43  贝尔塔猫  阅读(246)  评论(0编辑  收藏  举报