数据结构之栈-JavaScript实现栈的功能
记录自己的学习
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
function Stack(){
this.data = [];
this.push = push; //添一个或多个元素到栈顶
this.pop = pop; //移除栈顶的元素,同时返回被移除的元素
this.peek = peek; //返回被移除的元素
this.isEmpty = isEmpty; //判断栈是否为空,空返回true,否则返回false
this.clear =clear; //移除栈里的所有元素
this.size = size; //返回栈内元素的个数
};
function push(ele){
this.data.push(ele);
};
function pop(){
return this.data.pop(); //利用数组的pop()方法来达到移除栈顶的元素,同时返回被移除的元素
};
function peek(){
return this.data[this.data.length-1]
};
function isEmpty(){
return this.data.length == 0;
};
function size(){
return this.data.length;
};
function clear(){
this.data = [];
}; var sta = new Stack();
sta.push('lily');
sta.push('Tom')
console.log(sta.data) //['lily', 'Tom']
var peeka = sta.peek();
console.log(peeka) //Tom
var popa = sta.pop();
console.log(popa) //Tom
console.log(sta.data) //lily
运用上面实现的stack,实现进制转化
//进制转换 10进制转化2进制,8进制,16进制
function baseConverter(number, base){
var remStack = new Stack(),
rem,
baseString = '',
digits = '0123456789ABCDEF';
while(number > 0){
rem = number % base;
remStack.push(rem);
number = parseInt(number / base)
}
while(!remStack.isEmpty()){
baseString += digits[remStack.pop()];
}
return baseString;
} var a = baseConverter(15, 16)
console.log(a) //F
数据结构之栈-JavaScript实现栈的功能的更多相关文章
- 数据结构与算法JavaScript (一) 栈
序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...
- 数据结构与算法JavaScript描述——栈
栈就是和列表类似的一种数据结构,它可用来解决计算机世界里的很多问题. 栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现. 栈的使用遍布程序语言实现的方方面面,从表 ...
- 数据结构与算法JavaScript描述——栈的使用
有一些问题特别适合用栈来解决.本节就介绍几个这样的例子. 1) 数制间的相互转换 可以利用栈将一个数字从一种数制转换成另一种数制.假设想将数字n 转换为以b 为基数的数字,实现转换的算法如下. 使 ...
- 栈--数据结构与算法Javascript描述(4)
栈 Stack 概念 栈是一种高效的数据结构,数据只能在栈顶添加或者删除,所以这样的操作很快,而且容易实现.栈的使用遍布程序语言的方方面面,从表达式求值到处理函数调用. 栈是一种特殊的列表,栈内的元素 ...
- 数据结构之栈(JavaScript描述)
栈数据结构 栈是一种遵从后进先出原则的有序集合.新添加或待删除的元素都保存在栈的同一端,称为栈顶,另一端就叫栈底.在栈内,锌元素都靠近栈顶,救援都接近栈底 类似栈的例子 栈也被用在编程语言你的 ...
- 第四章:javascript: 栈
列表是一种最自然的数据组织方式.上一章已经介绍如何使用List类将数据组织成一个列表.如果数据存储的顺序不重要.也不必对数据进行查找,那么列表就是一种再好不过的数据结构.对于其它的一些应用,列表就显得 ...
- java数据结构和算法02(栈)
什么叫做栈(Stack)呢?这里的栈和jvm的java栈可不是一个东西... 栈作为一种数据结构,我感觉栈就类似一种接口,实现的话有很多种,比如用数组.集合.链表都可以实现栈的功能,栈最大的特点就是先 ...
- 急速JavaScript全栈教程
3 天前 · 3k 次阅读 急速JavaScript全栈教程 javascript node.js mongodb 140 自从一年前发布了Vuejs小书的电子书,也有些日子没有碰过它们了,现在 ...
- 详解JavaScript调用栈、尾递归和手动优化
调用栈(Call Stack) 调用栈(Call Stack)是一个基本的计算机概念,这里引入一个概念:栈帧. 栈帧是指为一个函数调用单独分配的那部分栈空间. 当运行的程序从当前函数调用另外一个函数时 ...
随机推荐
- 【原创】自己动手写控件----XSmartNote控件
一.前面的话 在上一篇博文自己动手写工具----XSmartNote [Beta 3.0]中,用到了若干个自定义控件,其中包含用于显示Note内容的简单的Label扩展控件,用于展示标签内容的labe ...
- linux 时间同步的2种方法
转载自: http://blog.51yip.com/server/1474.html 由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误差几秒到几分钟不等.对于服务器来说时间不准,会有很多麻 ...
- bootstrapvalidator+bootstrap-select select无法校验问题解决方法
$("#form_user_input") .bootstrapValidator( { message : 'This value is not valid', excluded ...
- php事务
<?php set_time_limit(); function sel($time,$number,$count){ ){ sel($time,$number,$count); return ...
- 【先定一个小目标】Windows下Redis的安装使用
Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- Xcode 8 支持 iOS 7 真机解决过程记录
领导要求不放弃iOS 7 用户,所以我们Xcode 8 上面支持ios 7 必须要解决! 解决方法(过程): 1.应用程序--Xcode(原来的Xcode 7)-- 显示包内容--Contents-- ...
- yii2创建数据表
原文地址: http://blog.csdn.net/xiaoyangxiaodong/article/details/45026865
- manacher算法专题
一.模板 算法解析:http://www.felix021.com/blog/read.php?2040 *主要用来解决一个字符串中最长回文串的长度,在O(n)时间内,线性复杂度下,求出以每个字符串为 ...
- springmvc.xml的基本配置
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...
- 怎么把Maven项目转为动态Web项目?