js数据结构--栈
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body> <script type="text/javascript">
1.栈(LIFO):先进后出
2.创建一个类表示栈
function Stack(){
//各种属性和方法的声明
}
3.需要一种数据结构来保存栈里的元素,选择数组
var items=[];
4.为栈声明一些方法
push(elements):添加一个或几个新元素到栈顶
pop():移除栈顶的元素,并返回被移除的元素
peek():返回栈顶的元素
isEmpty():如果栈里没有任何元素返回true,否则返回false
clear():移除栈里所有的元素
size():返回栈里元素的个数
5.实现push方法
this.push=function(elements){
items.push(elements);
}
6.实现pop方法
this.pop=function(){
return items.pop();
}
7.实现peek方法
this.peek=function(){
return items[items.length-1]
}
8.实现isEmpty方法
this.isEmpty=function(){
return items.length==0;
}
9.实现size方法
this.size=function(){
return items.length;
}
10.实现clear方法
this.clear=function(){
items=[];
}
11.栈的全部代码
function Stack(){
var items=[]; this.push=function(elements){
items.push(elements);
}; this.pop=function(){
return items.pop();
}; this.peek=function(){
return items[items.length-1];
}; this.isEmpty=function(){
return items.length==0;
}; this.size=function(){
return items.length;
}; this.clear=function(){
items=[];
};
}
-----------------------------------------------
使用Stack类 1.初始化Stack类,用isEmpty方法判断栈里是否为空
var stack=new Stack();
console.log(stack.isEmpty()); //true
2.往栈里添加元素(可以添加任何类型的元素)
stack.push(5);
stack.push(8);
3.使用peek方法,返回栈顶的元素
console.log(stack.peek()); //8
4.再添加一个元素
stack.push(11);
console.log(stack.size()); //3
console.log(stack.isEmpty()); //返回false
5.再添加一个元素
stack.push(15);
stack.pop();
stack.pop();
console.log(stack.size()); //2
-----------------------------------------------
栈的应用:十进制转二进制 function devideBy2(decNumber){
var remStack=new Stack(),rem,binaryString='';
while(remStack.size()>0){
rem=Math.floor(decNumber%2);
remStack.push(rem);
decNumber=Math.floor(decNumber/2);
} while(!decNumber(isEmpty())){
binaryString+=remStack.pop().toString();
} return binaryString; } 测试:
console.log(devideBy2(10)); //1010
console.log(devideBy2(233)); //11101001
</script>
</body>
</html>
js数据结构--栈的更多相关文章
- js 数据结构-栈与队列
/*[客栈的盘子/月井里的货物,后进先出]栈顶:最先入口/出口的位置栈底:最慢最晚出栈的位置*/ function Stack() { var item = []; //推(将货物推入月井) this ...
- js数据结构之栈、队列(数据结构与拉火车游戏)
1.js实现队列的数据结构(先进先出) function Queue (array) { if(Object.prototype.toString.call(array)!="[object ...
- JS数据结构第四篇 --- 栈
一.什么是数据结构栈 在数据结构中有一个栈结构,在内存空间中也有一个栈空间,这两个”栈“是两个不同的概念.这篇我们说的是数据结构中的栈.栈是一种特殊的线性表,特殊性在哪?就是只能在栈顶进行操作,往栈顶 ...
- 数据结构与算法 --- js描述栈
js描述栈及栈的使用 栈的特性就是只能通过一端访问,这一段就是叫做栈顶.咖啡馆内的一摞盘子就是最形象的栈的例子: 根据栈的特性,就可以定义栈的一些特殊属性和方法;用js的描述栈的时候底层数据结构用的是 ...
- JS数据结构与算法——栈
JS数据结构与算法--栈 1.栈结构概念 栈(Stack)是一种先进后出(LIFO Last in First out)的线性表,先进栈的将会比后进栈的先出栈. 栈的限制是仅允许在一端进行插入和删除运 ...
- (js描述的)数据结构[栈结构](2)
(js描述的)数据结构[栈结构](2) 一.什么是栈结构 1.一种受限制的线性结构,这种结构可以基于数组来实现. 2.可以抽象成一个容器,上面的是栈顶,底下的是栈底.所以仅允许对栈顶进行操作, 二.栈 ...
- js的栈内存和堆内存
栈内存和堆内存在了解一门语言底层数据结构上,挺重要的,做了个总结 JS中的栈内存堆内存 JS的内存空间分为栈(stack).堆(heap).池(一般也会归类为栈中). 其中栈存放变量,堆存放复杂对象, ...
- JS数据结构与算法-概述
JS数据结构与算法概述 数据结构: 计算机存储, 组织数据的方式, 就像锅碗瓢盆 算法: 一系列解决问题的清晰指令, 就像食谱 两者关系: 程序 = 数据结构 + 算法 邂逅数据结构与算法 什么是数据 ...
- Flask Vue.js全栈开发
Flask Vue.js全栈开发的 最新完整代码 及使用方式 本系列的最新代码及使用方式将持续更新到: http://www.madmalls.com/blog/post/latest-code/ 1 ...
- js模拟栈
栈:先入后出,后入先出 链表:先入先出,后入后出 下面使用js实现栈 var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 c ...
随机推荐
- RabbitMQ基本配置
1.用户角色配置 自带的guest/guest 超级管理员五中不同角色配置: 普通管理者(management):仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理. 策略制定者(policy ...
- 基于AidLux的自动驾驶智能预警应用方案
### 1. 自动驾驶感知算法及AidLux相关方案介绍 #### 1.1自动驾驶 自动驾驶汽车,又称无人驾驶车.电脑驾驶车.无人车.自驾车,是一种需要驾驶员辅助驾驶或者完全不需要操控的车辆.作为自动 ...
- 打包 IPA processing failed 失败
查看报错日志:有些SDK含有x86_64架构,移除即可 1. cd 该库SDK路径下 2.执行 lipo -remove x86_64 BaiduTraceSDK -o BaiduTraceSDK 解 ...
- 即构SDK支持对焦、变焦、曝光调整,让直播细节清晰呈现
对焦.变焦.曝光调整,摄影爱好者对这三个术语一定不陌生. 对焦是指通过相机对焦机构变动物距和相距的位置,使被拍物成像清晰的过程:变焦指的是在望远拍摄时放大远方物体,并使之清晰成像 :曝光调整是一种曝光 ...
- 【爬虫案例】用Python爬取知乎热榜数据!
目录 一.爬取目标 二.编写爬虫代码 三.同步讲解视频 3.1 代码演示视频 3.2 详细讲解视频 四.获取完整源码 一.爬取目标 您好,我是@马哥python说,一名10年程序猿. 本次爬取的目标是 ...
- stegsolve与zsteg的使用
zsteg 介绍:用来检测PNG和BMP中隐藏数据的工具,可以快速提取隐藏信息 使用环境:kali kali自带zsteg,可以用这个指令使用 gem install zsteg 下载完之后查看使用方 ...
- 正确处理 CSV 文件的引号和逗号
CSV(Comma-Separated Values,逗号分割值),就是用纯文本的形式存储表格数据,最大的特点就是方便. 作为开发,我们经常面临导数据的问题,特别是后台系统,产品或者运营的同事常常会提 ...
- 内核源码中单个.o文件的编译过程(六)
通过对过渡篇的学习,相信你已经具有了相当的知识储备,接下来就来继续学习单个.o文件的编译过程 以/drivers/char/mem.c的编译为例 make /drivers/char/mem.o 一. ...
- Redis 集群偶数节点跨地域部署之高可用测试
笔者目前所在公司存在多套 Redis 集群: A 集群 主 + 从 共 60 个分片,部署在 3 + 3 台物理机上,每台机器各承载 10 个端口 主库 30 个端口在广州,从库 30 个端口在中山 ...
- 2021-8-5 Microsoft文档学习笔记(C#)
以下列表概述了类可以包含的成员类型. 常量:与类相关联的常量值 字段:与类关联的变量 方法:类可执行的操作 属性:与读取和写入类的已命名属性相关联的操作 索引器:与将类实例编入索引(像处理数组一样)相 ...