用JavaScript来实现栈
来源:互联网 发布:2017软件开发工资 编辑:程序博客网 时间:2024/06/05 02:05
栈的定义
栈(Stack)是一种遵从后进先出(Last in, first out。简称LIFO)原则的有序集合。
定义栈的方法
压栈
方法:push()
语法:arrayStack.push(element1,element2…elementX)
参数:至少有一个元素
描述:添加一个或几个新元素到栈顶,无返回值。
退栈
方法:pop()
语法:arrayStack.pop()
参数:无
描述:移除栈顶的元素,同时返回被移除的元素
返回栈顶元素
方法:peek()
语法:arrayStack.peek()
参数:无
描述:仅仅返回栈顶元素
栈是否为空
方法:isEmpty()
语法:arrayStack.isEmpty()
参数:无
描述:如果栈中没有任何元素则返回true,否则返回false
清空栈
方法:clear()
语法:arrayStack.clear()
参数:无
描述:移除栈中的所有元素
返回栈的长度
方法:size()
语法:arrayStack.size()
参数:无
描述:返回栈中元素的个数
输出栈
方法:show()
语法:arrayStack.show()
参数:无
描述:返回栈中的所有元素
代码实现
通过动态原型模式创建栈类型
function Stack() { this.items = []; //初始化栈方法 if (typeof Stack.prototype.push != "function") { //压栈 Stack.prototype.push = function() { var len = arguments.length; if (len == 0) { return undefined; } for(var i=0;i<len;i++){ this.items.push(arguments[i]) } } } //退栈 Stack.prototype.pop = function() { return this.items.pop(); } //返回栈顶元素 Stack.prototype.peek = function() { return this.items[items.length - 1]; } //栈是否为空 Stack.prototype.isEmpty = function() { return this.items.length==0; } //返回栈长度 Stack.prototype.size=function(){ return this.items.length; } //清空栈 Stack.prototype.clear=function() { this.items=[]; } //返回栈 Stack.prototype.show = function() { return this.items; } } } }
十进制转二进制
function divideBy2(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; }
阅读全文
0 0
- 用JavaScript来实现栈
- 用JavaScript来实现队列
- 用javascript来实现动画导航
- 用JavaScript来实现链表LinkedList
- 用javascript来实现select标签的美化
- 用JavaScript来实现一些简单的控件验证
- 用javascript来实现页面的换肤功能
- 用javascript实现来随机位置出现广告图片
- 用 Json 来实现 PHP 与 JavaScript 间数据交换
- 用队列来实现栈
- 使用JavaScript来实现图片的切换
- 用JavaScript来格式化日期
- 用JavaScript来控制状态栏
- 用Javascript来操作Cookie
- 用firebug来调试javascript
- 用两个队列来实现栈
- 用两个栈来实现一个队列
- 用两个栈来实现一个队列()
- RecyclerView源码浅析之测量与布局
- 图的表示
- 如何看待性欲?
- Ubuntu下使用USB3.2接口
- Linux中,cmake-3.x 编译安装说明
- 用JavaScript来实现栈
- 第八章 流量复制/AB测试/协程
- MySQL数据库优化经验详谈(服务器普通配置)
- 数组实现二叉树
- keras自动编码器实现系列之卷积自动编码器
- AdversarialNetsPapers: The classical Papers about adversarial nets
- Android_设置软盘监听事件
- 单例模式
- “玲珑杯”线上赛 Round #17 震惊,99%+的中国人都会算错的问题(容斥原理)