栈的JS实现
来源:互联网 发布:孤岛惊魂4 知乎 编辑:程序博客网 时间:2024/06/03 20:14
栈,是一种特殊的线性表,其插入及删除的操作都在线性表的同一端进行。这一端称为栈顶,另一端称为栈底。就类似于餐厅里的一摞盘子,后放的盘子在上方,也会先被人拿走。栈具有“后进先出”的逻辑特性。栈在计算机科学中有着广泛的应用,递归函数的实现就利用了栈这种数据结构,在递归时,计算机会维护一个递归工作栈,当一个递归函数被调用时,被调函数的局部变量、形参的值以及一个返回地址就会储存在递归工作栈中。运行时按照后进先出的顺序,进行函数执行,完成递归操作。编译原理中也多次使用栈这种数据结构~
栈是一种特殊的线性表,故其在存储结构上也有链式存储和顺序存储两种。代码如下:
/*链栈的JS实现*/function LinkedStack(){ //节点结构定义 var Node = function(element){this.element = element;this.next = null;}var length = 0,top; //栈顶指针//压栈操作this.push = function(element){var node = new Node(element),current;if(!top){top = node;length++;return true;}else{node.next = top;top = node;length++;return true;}} //退栈操作this.pop = function(){var current = top;if(top){top = current.next;current.next = null;length--;return current;}else{return 'null stack';}} //获取栈顶节点this.top = function(){return top;} //获取栈长this.size = function(){return length; } this.toString = function(){var string = '',current = top;while(current){string += current.element;current = current.next;}return string;} //清空栈this.clear = function(){top = null;length = 0;return true;}}//顺序栈的JS实现 这里直接使用了JS内置的Array对象function ArrayStack(){var arr = []; //压栈操作this.push = function(element){arr.push(element);} //退栈操作this.pop = function(){return arr.pop();} //获取栈顶元素this.top = function(){return arr[arr.length-1];} //获取栈长this.size = function(){return arr.length;} //清空栈this.clear = function(){arr = [];return true;}this.toString = function(){return arr.toString();}}
阅读全文
0 0
- 栈的JS实现
- JS 时钟的js实现
- 用js来实现栈的对象
- js实现的样式
- js QueryString 的实现
- js重载的实现
- Js实现的AdRorator
- js重载的实现
- js模块的实现
- js 实现的算法
- js 实现的单链表
- js实现的心性
- JS继承的实现
- js继承的实现
- js的一些实现
- js继承的实现
- base64的js实现
- js继承的实现
- Bootstrap基础
- Apache ab 的安装使用
- Spring Cloud构建分布式微服务云架构基础
- 进程调度API之preempt_count_add(val)/preempt_count_sub(val)
- Java正则表达式及字符串处理详解
- 栈的JS实现
- [leetcode]278. First Bad Version[facebook]
- 渗透测试之解析漏洞
- iscsi的基本设定
- nfs网络文件系统 iscsi网络存储部署
- 启发函数
- 卡内基梅隆大学提出基于学习的动作捕捉模型,用自监督学习实现人类3D动作追踪
- 如何使用深度学习自动识别限速标志?这里有一份Keras和TensorFlow教程
- Keep real