<!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. 除了参数,ref关键字还可以用在什么地方?

    <老生常谈:值类型 V.S. 引用类型>中花了很大的篇幅介绍ref参数针对值类型和引用类型变量的传递.在C#中,除了方法的ref参数,我们还有很多使用ref关键字传递引用/地址的场景,本篇 ...

  2. 【AI新趋势期刊#1】GPT自动理解视频、AI法律顾问、大模型安全围栏

    每天都要浏览大量AI相关新闻,是不是感到信息量爆炸,有效信息少? 这么多新产品和新工具,到底哪些是真正是有价值的,哪些只是浮躁的一时热点? 想参与AI产品和工具的开发,从哪里能够获得大量的灵感和思路? ...

  3. 获得 markdown 无序列表格式的文件目录树

    tree 命令可以获得文件目录结构,但是放在文档中时,我想用 markdown 无序列表的形式,在编辑器内还可以折叠. 完整解决方案:在 ~/.oh-my-zsh/custom 下添加下述自定义函数( ...

  4. CMU15-445 Project3 Query Execution心得

    Project3 Query Execution 心得 一.概述 首先要说:这个 project很有趣很硬核!从这个 project 开始才感觉自己在数据库方面真正成长了! 第一个 project : ...

  5. Django-4.2博客开发教程:需求分析并确定数据表(四)

    前三步已经完成了一个初步流程,从创建项目>应用>数据迁移>访问首页.以下是我整理的基本流程,接下来一步一步完成整个项目. 1.我们的需求: 博客的功能主要分为:网站首页.文章分类.文 ...

  6. IDEA:使用Test注解,控制台无法输入

    解决方案 步骤一: 点击help ===> Edit Custom VM Options... 步骤二: 添加文件末尾添加如下内容 -Deditable.java.test.console=tr ...

  7. Pycharm:显示每一行代码的修改记录

    解决方案 安装插件GitToolBox

  8. Unity的BuildPlayerProcessor:深入解析与实用案例

    Unity BuildPlayerProcessor Unity BuildPlayerProcessor是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目时自动执行一些操作.这个功能可 ...

  9. vue vue-simple-uploader 前端的简单使用

    前言 因为项目需要上传大文件tif图,考虑使用分片上传. 1.安装 npm install vue-simple-uploader --save 2.main.js中初始化 import upload ...

  10. Programming abstractions in C阅读笔记:p91-p106

    <Programming Abstractions In C>学习第45天,p91-p102,完成第二章内容学习.总结如下: 一.技术总结 1.垃圾回收 p91,"Some la ...