javastript实现栈
来源:互联网 发布:pop3 smtp 端口 编辑:程序博客网 时间:2024/05/16 07:39
栈,是一种特殊的线性表,其插入及删除的操作都在线性表的同一端进行。这一端称为栈顶,另一端称为栈底。就类似于餐厅里的一摞盘子,后放的盘子在上方,也会先被人拿走。栈具有“后进先出”的逻辑特性。栈在计算机科学中有着广泛的应用,递归函数的实现就利用了栈这种数据结构,在递归时,计算机会维护一个递归工作栈,当一个递归函数被调用时,被调函数的局部变量、形参的值以及一个返回地址就会储存在递归工作栈中。运行时按照后进先出的顺序,进行函数执行,完成递归操作。编译原理中也多次使用栈这种数据结构~
栈是一种特殊的线性表,故其在存储结构上也有链式存储和顺序存储两种。代码如下:
链式存储:
//链式存储function linkedStack(){ var Node = function(element){ this.element = element; this.next = null; } var top,length=0; //进栈 this.push = function(element){ var node = new Node(element); if(!top){ top = node; return }else{ node.next = top; top = node; return } length++; } //出栈 this.pop = function(){ var curren = top.next;; if(curren){ top= curren.next ; curren.next = null; length--; return curren }else{ return "该栈已无数据" } } //获取最近进入的数据 this.top = function(){ return top.element } //获取栈长度 this.length = function(){ return length } //将栈转换为字符串 this.toString = function(){ var string = '',current = top; while(current){ current= current.next; string+=current.element; return string } }}
顺序存储:
//顺序栈的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(); } }
转载自 http://www.cnblogs.com/zhuwq585/p/6075115.html
阅读全文
0 0
- javastript实现栈
- javastript:setTimeout
- 栈实现
- 栈实现
- 如何实现 :双栈实现队列 双队列实现栈
- Java栈实现:数组实现和链表实现
- 队列实现栈和栈实现队列
- 栈实现队列,链表实现栈
- 栈实现队列&&队列实现栈
- 栈实现队列,队列实现栈
- 队列实现栈,栈实现队列
- 数据结构--队列实现栈&栈实现队列
- 自己实现的栈 用数组实现
- 阶乘的栈实现和递归实现
- 栈数组实现实现文件C语言
- 栈的实现—由数组实现
- 用链表实现栈C++实现源码
- 栈的顺序实现和链接实现
- 504. Base 7
- c++ map
- 自定义Adapter的getView方法的含义
- 难以分类编程题(不断更新)
- 腾讯2018校招WEB前端开发笔试有感
- javastript实现栈
- 智慧教室与未来教育
- POJ 3261 Milk Patterns 后缀数组+二分
- 设计模式六大原则
- PHP redis库
- 可被路由协议、路由协议、不可路由协议的区别
- ccf认证_分蛋糕 编号201703-1
- 文件夹操作命令笔记
- 使用OPENCV简单实现具有肤质保留功能的磨皮增白算法