javascript实现堆栈和简单的应用
来源:互联网 发布:宜嘉情感分析 知乎 编辑:程序博客网 时间:2024/06/06 06:12
堆栈数据结构的实现:
在编程方式上面采用了面向对象编程里面的组合使用构造函数模式和原型模式;
实现原理:这里就不阐述堆栈的基本概念了,学c语言数据结构的时候都学过吧,这里主要纪录一下用js实现的原理;c语言用结构体去实现,在js语言中用面向对象就十分方便了;
- 用dataStore存储数据;
- 用top表示栈顶位置,它的值也等于栈的长度;
- 出栈和入栈方法分别是pop和push;
- show()方法返回某一个位置的值 -
function Stack(){ //存放数据 this.dataStore = []; // 纪录栈顶的位置 this.top = 0; } Stack.prototype = { // 出栈 push: function(value){ this.dataStore[this.top ++] = value; }, // 入栈 pop: function(){ if (this.top > 0){ return this.dataStore[-- this.top]; } else { alert("亲:已经到栈顶了,不能弹出栈了"); } }, // 数组长度 length: function(){ return this.top; }, // 展示当前位置的值 show: function(index){ if (index <= this.top && index > 0){ return this.dataStore[index - 1]; } else { alert("警告:请求输出的值超出栈顶或者小于0"); } } }
堆栈实现进制转换
实现原理:
step1: 新建一个堆栈
step2:把值除基数的余数压入栈
step3:更新number值为Math.floor(number / base)
step4:挨个出栈,拼接成字符串形式
代码:
function convert(number, base){ var stack2 = new Stack(); while (number > 0){ stack2.push(number % base); number = Math.floor(number / base); } var length = stack2.top; var str = ''; for (var i = 0; i < length; i++){ str += stack2.pop(); } return str }
利用堆栈判断回文
思路:
step1:将字符串顺序遍历压进堆栈
step2:将堆栈依次压出
代码:
function isPalindrome(str){ var stack = new Stack(); var newStr = ''; for (var i = 0; i < str1.length; i++){ stack.push(str1[i]); } var length = stack.top; for (var i = 0; i < length; i++){ newStr += stack.pop(); } return newStr === str; }
阅读全文
0 0
- javascript实现堆栈和简单的应用
- 堆栈的简单实现
- C#数据结构和算法学习系列六----堆栈、堆栈的实现和应用
- 堆栈的简单C++实现
- 堆栈的简单lua实现
- 堆栈和队列的应用
- JavaScript实现数据结构中的队列和堆栈
- 堆栈和队列的实现
- 堆栈和队列的实现
- 堆栈的定义和实现
- JavaScript队列或者堆栈的实现
- 堆栈的简单实现之二:进制转换方面的简单应用(C语言实现)
- 一个简单的动态堆栈的实现
- (五)链式堆栈的实现与应用
- VB简单堆栈类的实现
- JAVA实现简单的堆栈结构
- Python 使用list实现简单的堆栈
- JavaScript简单语法和应用
- 九、 通用工具 ----clock和Timer
- 从头开始自己搭建服务器,实现web+android互联(ios暂缓) 开篇
- Ti-am335x-uboot-2015.07移植LCD显示logo功能
- java身份证合法性校验
- Java的深拷贝与浅拷贝
- javascript实现堆栈和简单的应用
- 计算机网络层次划分及协议了解
- 九、 通用工具 ----头文件cstddef,cstdlib和,cstring
- MonoBehaviour类
- SystemUI实现逻辑及对比8.0
- 浅析分布式系统背后的基础设施
- javaseday35补充(date对象 with语句 math对象 全局方法 自定义对象通过中括号获取值)
- 【C#学习】C#基础
- java面试题(剑指Offer):找出该链表的环的入口结点