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 ...
随机推荐
- MapReduce实现TopN的效果
1.背景 最近在学习Hadoop的MapReduce,此处记录一下如何实现 TopN 的效果,以及在MapReduce中如何实现 自定义分组. 2.需求 我们有一份数据,数据中存在如下3个字段,订单编 ...
- 提示工程101|与 AI 交谈的技巧和艺术
随着 ChatGPT 的问世,人工智能(AI)新时代也正式开启.ChatGPT 是一种语言模型.它与用户进行对话交互,以便用户输入问题或提示,模型响应,然后对话可以继续来回进行,类似于在消息传递应用程 ...
- Java并发篇:6个必备的Java并发面试种子题目
线程创建和生命周期 线程的创建和生命周期涉及到线程的产生.执行和结束过程.让我们继续深入探索这个主题: 线程的创建方式有多种,你可以选择适合你场景的方式: 继承Thread类: 创建一个类,继承自Th ...
- 实践分析丨AscendCL应用编译&运行案例
本文分享自华为云社区<AscendCL应用编译&运行问题案例>,作者: 昇腾CANN. AscendCL(Ascend Computing Language)是一套用于在昇腾平台上 ...
- DateTime和DateTimeOffset是同胞兄弟吗?
小编在日常开发中,用得最多的时间类型就是DateTime,直到一次偶然的邂逅,让小编遇见了DateTimeOffset.当时小编也是一脸迷茫,因为在小编的C#编程字典里就没出现过DateTimeOff ...
- 【overcome error】dereferencing pointer to incomplete type
@ 目录 前言 解决 代码情况 分析问题 尾声 前言 这个问题是我在学习数据结构链栈部分遇到的,英文报错如题所示,中文意思是:取消引用不完整类型的指针,在百度一圈也没明白,(百度搜索,看一个和全看基本 ...
- webpack配置文件的分离
配置文件的分离 目的就是让开发环境, 生产环境,测试环境的配置分隔开 步骤一: 在项目根目录下创建一个 build 文件夹专门用来存放配置文件,再创建三个js文件, base.config.js 文件 ...
- 王道oj/problem17
网址:http:oj.lgwenda.com/problem17 思路:指针其实就是存储地址的一个空间,LinkList=LNode* 代码: #define _CRT_SECURE_NO_WARNI ...
- Unity Shader编辑器工具类ShaderUtil 常用函数和用法
Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译.导入和管理着色器.本文将介绍ShaderU ...
- [python]为指定目录下的文件名批量加前缀
前言 功能描述:批量重命名指定目录下的文件,文件名加前缀,默认格式为"目录名_原文件名". 示例代码 import argparse import os import sys im ...