JavaScript实现一个简单数据结构栈

我们将创建一个类来表示栈。首先声明这个类:

    function Stack(){   
    }

接着我们需要一种数据结构来保存栈中的元素。可以选择数组:

    var items = [];

接下来,为我们的栈声明一些方法。

  • push(element): 添加新元素到栈顶

  • pop(): 移除栈顶的元素, 同时返回被移除的元素。

  • peek(): 返回栈顶元素,不对栈元素做任何修改。

  • isEmpty(): 判断栈是否为空, 为空返回true, 否则返回false

  • clear(): 移除栈里的所有元素。

  • size(): 返回栈中的元素个数

  • print(): 遍历栈中的元素。


实现代码部分:

function Stack(){

    var items = [];

    this.push = function(element){ //添加新元素到栈顶

        items.push(element)

    }

    this.pop = function(){ //移除栈顶的元素

        return items.pop();
    }

    this.peek = function(){ //返回栈顶元素 不做任何操作

        return items[items.length-1];
    }

    this.isEmpty = function(){ //判断栈是否为空

        return items.length == 0;
    }

    this.size = function(){ //返回栈中元素的长度

        return items.length;
    }

    this.clear = function(){ //清空栈元素

        items = [];
    }

    this.print = function(){ //打印栈中的元素

        return items.toString();
    }
}
//利用栈实现进制转换函数
function baseConverter(decNumber, base){ //decNumber 为要转化的任意十进制数字 base为要转化为几进制数字

    var remStack = new Stack(),
        rem,
        baseString = '',
        digits = '0123456789ABCDEF';

        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;
}


var stack = new Stack();

stack.push(6);
stack.push(8);
stack.push(12);
console.log('栈的遍历' + stack.print());
console.log('出栈:' + stack.pop());
console.log('栈的遍历' + stack.print());


console.log('栈的长度为:' + stack.size());
console.log('是否为空栈:' + stack.isEmpty());
console.log('100345转化为二进制为:' + baseConverter(100345, 2));
console.log('100345转化为八进制为:' + baseConverter(100345, 8));
console.log('100345转化为十六进制为:'+ baseConverter(100345, 16));

运行结果如下:

运行结果

猜你喜欢

转载自blog.csdn.net/tian_123456789/article/details/78115761