资讯专栏INFORMATION COLUMN

Javascript实现基本的数据结构 一 栈

cnio / 3297人阅读

摘要:今天实现的是最基本的数据结构之一栈栈在中有着非常重要,基本类型会存储在栈中,你可以操作实际的值。要定义一个栈,首先需要明白,栈的基本结构有哪些,需要遵循哪些规则。首先创建一个函数对象表示栈。

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/50779.html

相关文章

  • Javascript实现基本数据结构

    摘要:今天实现的是最基本的数据结构之一栈栈在中有着非常重要,基本类型会存储在栈中,你可以操作实际的值。要定义一个栈,首先需要明白,栈的基本结构有哪些,需要遵循哪些规则。首先创建一个函数对象表示栈。 Javascript工程师,总会面对一个问题,数据结构和算法会成为自己的短板,不仅是对非科班,甚至一些科班出身的工程师来说也是自己的短板,于是就有了这系列文章。基础决定深度,前端入门易,上升困难,...

    seanlook 评论0 收藏0
  • JavaScript数据结构

    摘要:我们都知道数组是里面比较常用的一种数据结构,栈和数组类似,定义如下栈是一种遵从后进先出原则的有序集合。新增加和待删除的元素都保存在栈的尾部,也称栈顶,相反的另一端就叫栈底,在栈的这种数据结构里面,我们新增的元素都在栈顶,旧的元素都在栈底。 由于不是计算机专业出身,对数据结构这些了解的比较少,最近看了一些相关的书籍,这里做一些总结。本篇要说的是栈。我们都知道数组是JavaScript里面...

    nanchen2251 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 内存与堆内存 、浅拷贝与深拷贝

    摘要:栈内存与堆内存浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然。栈内存与堆内存中的变量分为基本类型和引用类型。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 想写好前端,先练好内功。 栈内存与堆内存 、浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然。 笔者写的 JavaScrip...

    dailybird 评论0 收藏0
  • 前端进击巨人(二):、堆、队列、内存空间

    摘要:中有三种数据结构栈堆队列。前端进击的巨人一执行上下文与执行栈,变量对象中解释执行栈时,举了一个乒乓球盒子的例子,来演示栈的存取方式,这里再举个栗子搭积木。对于基本类型,栈中存储的就是它自身的值,所以新内存空间存储的也是一个值。 面试经常遇到的深浅拷贝,事件轮询,函数调用栈,闭包等容易出错的题目,究其原因,都是跟JavaScript基础知识不牢固有关,下层地基没打好,上层就是豆腐渣工程,...

    edgardeng 评论0 收藏0

发表评论

0条评论

cnio

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<