摘要:今天实现的是最基本的数据结构之一栈栈在中有着非常重要,基本类型会存储在栈中,你可以操作实际的值。要定义一个栈,首先需要明白,栈的基本结构有哪些,需要遵循哪些规则。首先创建一个函数对象表示栈。
Javascript工程师,总会面对一个问题,数据结构和算法会成为自己的短板,不仅是对非科班,甚至一些科班出身的工程师来说也是自己的短板,于是就有了这系列文章。
基础决定深度,前端入门易,上升困难,学习曲线陡,很多时候就是因为缺少这些思维。
今天实现的是最基本的数据结构之一 栈
栈在js中有着非常重要,基本类型会存储在栈中,你可以操作实际的值。
要定义一个栈,首先需要明白,栈的基本结构有哪些,需要遵循哪些规则。
栈是一个线性表,遵循着LIFO原则的有序集合,也就是先进后出,先进入栈的元素,会储存在栈底,后进入的元素会放在栈顶,就像我们小时候见过的粮仓一样,先进入的小麦被放在栈底。并且,栈只有一端是可以操作的,就是栈顶。
function Stack() { }
首先创建一个函数(对象)表示栈。
let items = [];
然后需要创建一个数组来保存需要保存的元素。
this.push = function(element) { items.push(element) }//调用数组的push方法,将元素加入栈 this.pop = function() { return items.pop(); }//调用数组的pop方法移除栈顶元素并且返回该元素 this.peek = function() { return items[items.length - 1] }//调用数组的peek方法,返回栈顶的第一个元素也就是整个栈的最后一个元素。 this.isEmpty = function() { return items.length == 0; }//检查栈是不是为空的,返回布尔值 this.size = function() { return items.length; }//返回栈的长度 this.clear = function() { items = []; }//删除栈中所有的元素 this.print = function() { console.log(items.toString) }//打出栈所有的元素
接下来需要给栈定义方法
function Stack() { let items = []; this.push = function(element) { items.push(element) console.log(this) } 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 = []; } this.print = function() { console.log(items.toString()) } }
这样就简单的创建了栈
接下来需要试一下栈的基本功能
let stack = new Stack();定义一个新的对象 console.log(stack.__proto__)//__proto__等于prototype.constructor
栈就这样创建完成了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82991.html
摘要:今天实现的是最基本的数据结构之一栈栈在中有着非常重要,基本类型会存储在栈中,你可以操作实际的值。要定义一个栈,首先需要明白,栈的基本结构有哪些,需要遵循哪些规则。首先创建一个函数对象表示栈。 Javascript工程师,总会面对一个问题,数据结构和算法会成为自己的短板,不仅是对非科班,甚至一些科班出身的工程师来说也是自己的短板,于是就有了这系列文章。基础决定深度,前端入门易,上升困难,...
摘要:我们都知道数组是里面比较常用的一种数据结构,栈和数组类似,定义如下栈是一种遵从后进先出原则的有序集合。新增加和待删除的元素都保存在栈的尾部,也称栈顶,相反的另一端就叫栈底,在栈的这种数据结构里面,我们新增的元素都在栈顶,旧的元素都在栈底。 由于不是计算机专业出身,对数据结构这些了解的比较少,最近看了一些相关的书籍,这里做一些总结。本篇要说的是栈。我们都知道数组是JavaScript里面...
摘要:栈内存与堆内存浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然。栈内存与堆内存中的变量分为基本类型和引用类型。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 想写好前端,先练好内功。 栈内存与堆内存 、浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然。 笔者写的 JavaScrip...
摘要:中有三种数据结构栈堆队列。前端进击的巨人一执行上下文与执行栈,变量对象中解释执行栈时,举了一个乒乓球盒子的例子,来演示栈的存取方式,这里再举个栗子搭积木。对于基本类型,栈中存储的就是它自身的值,所以新内存空间存储的也是一个值。 面试经常遇到的深浅拷贝,事件轮询,函数调用栈,闭包等容易出错的题目,究其原因,都是跟JavaScript基础知识不牢固有关,下层地基没打好,上层就是豆腐渣工程,...
阅读 621·2019-08-30 15:44
阅读 1273·2019-08-30 11:02
阅读 2908·2019-08-29 18:42
阅读 3485·2019-08-29 16:16
阅读 1684·2019-08-26 13:55
阅读 1739·2019-08-26 13:45
阅读 2360·2019-08-26 11:43
阅读 3160·2019-08-26 10:32