js 实现栈的结构
js实现一个栈的数据结构
首先了解一下什么是栈,栈是一个后进先出的一种数据结构,执行起来效率比较高。
对于栈主要包括一些方法,弹出栈pop(),弹出栈顶元素,并删除该元素;压入栈push(),向栈中压入某个方法,栈中的长度加一;读取栈顶元素peek(),仅读取不删除
使用js的构造模式创建栈类,原型进行共享主要方法
代码实现如下
(function(root) {
	function Stack() {
		this.dataStore = [];
		//数组的元素个数
		this.top = 0;
	}
	Stack.prototype = {
		pop: function() {
			//出栈时,主要使用前减运算,返回栈顶元素,元素个数减一
			return this.dataStore[--this.top];
		},
		push: function(elem) {
			//入栈时,使用后加运算符,先在栈顶添加元素,元素个数加一
			this.dataStore[this.top++] = elem;
		},
		peek: function() {
			return this.dataStore[this.top - 1];
		},
		clear: function() {
			//当清空栈时,访问栈顶的结果为undefined
			this.top = 0;
		},
		length: function() {
			return this.top;
		}
	}
	root.Stack = Stack;
})(global);
var stack = new Stack();
stack.push("liang0");
stack.push("liang1");
stack.push("liang2");
console.log(stack.peek());
console.log(stack.pop());
console.log(stack.peek());
stack.push("liang4");
console.log(stack.peek());
stack.clear();
console.log(stack.peek());
执行结果:

js 实现栈的结构的更多相关文章
- 数组实现栈的结构(java)
		自定义数组实现栈的结构. package test; public class MyArrayStackClient { public static void main(String[] args) ... 
- jQuery图片无缝滚动JS代码ul/li结构
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ... 
- JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构
		JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ... 
- JS中的运算符和JS中的分支结构
		JS中的运算符 1.算术运算(单目运算符) + .-.*. /. %取余.++自增 .--自减 +:两种作用,链接字符串/加法运算.当+两边全为数字时,进行加法运算:当+两边有任意一边为字符串时,起链 ... 
- Java虚拟机运行时栈帧结构--《深入理解Java虚拟机》学习笔记及个人理解(二)
		Java虚拟机运行时栈帧结构(周志明书上P237页) 栈帧是什么? 栈帧是一种数据结构,用于虚拟机进行方法的调用和执行. 栈帧是虚拟机栈的栈元素,也就是入栈和出栈的一个单元. 2018.1.2更新(在 ... 
- 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 ... 
- Node.js最新技术栈之Promise篇
		前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ... 
- 【Todo】React & Nodejs学习 &事件驱动,非阻塞IO & JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可
		JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可 今天在学习ReactJS和NodeJS,看到关于ReactJS的这篇文章 ... 
随机推荐
- P2533 [AHOI2012]信号塔
			传送门 据说是一个叫做随机增量法的东西 枚举\(i\),如果不在圆中将它设为圆心 枚举\(j\),如果不在圆中将\((i,j)\)成为新的圆的直径 枚举\(k\),如果不在圆中让\(i,j,k\)组成 ... 
- jquery实现图片预加载提高页面加载速度
			使用jquery实现图片预加载提高页面加载速度和用户体 我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题 呢?首 ... 
- Java Itext 生成PDF文件
			利用Java Itext生成PDF文件并导出,实现效果如下: PDFUtil.java package com.jeeplus.modules.order.util; import java.io.O ... 
- WIN 10家庭版没有Hyper-V
			新建文件Hyper-V.cmd 内容如下 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum > ... 
- [ ZJOI 2006 ] Mahjong
			\(\\\) \(Description\) 现有权值分别为\(1\text~100\)的\(100\)种牌,分别给出每种排的张数\(A_i\),试判断能否胡牌,胡牌需要将所有牌不重不漏地分成以下几类 ... 
- CSS——滑动门
			在背景图片中可以对图片进行圆角设置,但是这样是写死的.如下图: 情况分析:如果我们li标签中的文字变少了或者变多了,我们就需要重新定义背景图片.所以我们使用滑动门技术.它将图片特殊地方进行分割.宽度利 ... 
- ASP.net参数传递总结
			同一页面.aspx与.aspx.cs之间参数传递 1. .aspx.cs接收.aspx的参数:由于.aspx和.aspx.cs为继承关系,所以.aspx.cs可以直接对.aspx中的ID进行值提取,具 ... 
- spring 415
			不支持的媒体类型 spring mvc 使用@requestBody注解json请求时,jQuery有限制,否则会出现 415 错误 1.使用ajax $.ajax({ ... 
- Python常用的标准库及第三方库
			标准库Python拥有一个强大的标准库.Python语言的核心只包含数字.字符串.列表.字典.文件等常见类型和函数,而由Python标准库提供了系统管理.网络通信.文本处理.数据库接口.图形系统.XM ... 
- Flask 框架构建
			Flask 框架构建,目标构建成Django类似的结构 一. 先看看构建后的效果 # 第一次初始化 python manage.py db init # 生成数据库版本 python manage.p ... 
