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

来源:互联网 发布:淘宝工业生产许可证 编辑:程序博客网 时间:2024/06/11 23:50

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

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

运行结果如下:

运行结果

原创粉丝点击