<!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数据结构--栈的更多相关文章

  1. js 数据结构-栈与队列

    /*[客栈的盘子/月井里的货物,后进先出]栈顶:最先入口/出口的位置栈底:最慢最晚出栈的位置*/ function Stack() { var item = []; //推(将货物推入月井) this ...

  2. js数据结构之栈、队列(数据结构与拉火车游戏)

    1.js实现队列的数据结构(先进先出) function Queue (array) { if(Object.prototype.toString.call(array)!="[object ...

  3. JS数据结构第四篇 --- 栈

    一.什么是数据结构栈 在数据结构中有一个栈结构,在内存空间中也有一个栈空间,这两个”栈“是两个不同的概念.这篇我们说的是数据结构中的栈.栈是一种特殊的线性表,特殊性在哪?就是只能在栈顶进行操作,往栈顶 ...

  4. 数据结构与算法 --- js描述栈

    js描述栈及栈的使用 栈的特性就是只能通过一端访问,这一段就是叫做栈顶.咖啡馆内的一摞盘子就是最形象的栈的例子: 根据栈的特性,就可以定义栈的一些特殊属性和方法;用js的描述栈的时候底层数据结构用的是 ...

  5. JS数据结构与算法——栈

    JS数据结构与算法--栈 1.栈结构概念 栈(Stack)是一种先进后出(LIFO Last in First out)的线性表,先进栈的将会比后进栈的先出栈. 栈的限制是仅允许在一端进行插入和删除运 ...

  6. (js描述的)数据结构[栈结构](2)

    (js描述的)数据结构[栈结构](2) 一.什么是栈结构 1.一种受限制的线性结构,这种结构可以基于数组来实现. 2.可以抽象成一个容器,上面的是栈顶,底下的是栈底.所以仅允许对栈顶进行操作, 二.栈 ...

  7. js的栈内存和堆内存

    栈内存和堆内存在了解一门语言底层数据结构上,挺重要的,做了个总结 JS中的栈内存堆内存 JS的内存空间分为栈(stack).堆(heap).池(一般也会归类为栈中). 其中栈存放变量,堆存放复杂对象, ...

  8. JS数据结构与算法-概述

    JS数据结构与算法概述 数据结构: 计算机存储, 组织数据的方式, 就像锅碗瓢盆 算法: 一系列解决问题的清晰指令, 就像食谱 两者关系: 程序 = 数据结构 + 算法 邂逅数据结构与算法 什么是数据 ...

  9. Flask Vue.js全栈开发

    Flask Vue.js全栈开发的 最新完整代码 及使用方式 本系列的最新代码及使用方式将持续更新到: http://www.madmalls.com/blog/post/latest-code/ 1 ...

  10. js模拟栈

    栈:先入后出,后入先出 链表:先入先出,后入后出 下面使用js实现栈 var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 c ...

随机推荐

  1. 基于JavaFX的扫雷游戏实现(一)——整体概述

    我在不要更新挑战中坚持了一年,你也来试试吧(咕咕咕)!   好言归正传,本次更新带来的是经典游戏扫雷,基于JavaFX实现.篇幅有限,文章主要介绍核心操作实现,不会列出所有代码.需要完整源码或是想预览 ...

  2. 开发中MongoDB遇到的各种问题

    目录 一.安装6版本以下 二.安装6版本及以上 三.安装6版本以下(解压版) 四.配置本地 Windows MongoGB 服务 五.navicat 连接远程mongodb数据库 六.ip不一致问题 ...

  3. 2023-07-04:给定一个数组A, 把它分成两个数组B和C 对于数组A每个i位置的数来说, A[i] = B[i] + C[i] 也就是一个数字分成两份,然后各自进入B和C 要求B[i], C[i

    2023-07-04:给定一个数组A, 把它分成两个数组B和C 对于数组A每个i位置的数来说, A[i] = B[i] + C[i] 也就是一个数字分成两份,然后各自进入B和C 要求B[i], C[i ...

  4. 2023-07-10:Kafka如何做到消息不丢失?

    2023-07-10:Kafka如何做到消息不丢失? 答案2023-07-10: Kafka采用多种机制来确保消息的不丢失,其中包括副本机制.ISR(In-Sync Replicas)机制以及ACK机 ...

  5. 2021-7-11 Vue的计算属性和侦听器

    计算属性是为了让页面显示更加简洁,基于data数据进行处理的方法,以下为实例 <!DOCTYPE html> <html> <head> <title> ...

  6. 给你推荐一款快速通过 typescript 生成 jsonschema 的包处理器

    theme: github fast-typescript-to-jsonschema Typescript 生成 jsonschema 数据插件 性能 案例 interface AAA { a: n ...

  7. 王道oj/problem16

    网址:http://oj.lgwenda.com/problem/16 思路:都在注释里,注意增删查的参数以及停止条件 代码: #define _CRT_SECURE_NO_WARNINGS#incl ...

  8. OpenLayers文档

    https://openlayers.org/en/latest/apidoc/module-ol_interaction_DragZoom-DragZoom.html#changed

  9. 个人用C#编写的壁纸管理器 - 开源研究系列文章

    今天介绍一下笔者自己用C#开发的一个小工具软件:壁纸管理器. 开发这个小工具的初衷是因为Windows操作系统提供的功能个人不满意,而且现在闲着,所以就随意写了个代码.如果对读者有借鉴参考作用就更好了 ...

  10. Java日志系列:Log4j使用和原理分析

    目录 一.简介 二.使用 三.日志级别 四.组件说明 Loggers Appenders Layouts 五.配置 加载初始化配置 配置文件加载 查看日志记录器的详细信息 六.Layout的格式 七. ...