javascript数据结构之栈。

接下来我会试着用javascript来是实现常见数据结构,今天先写栈。

首先我们得知道,栈是一种遵循后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。在JavaScript中变量保存和函数调用都是用栈存储的。

首先创建一个类来表示一个栈,需要一种数据结构来保存栈里的元素。这里我们就选择数组来存放栈内部的数据:var array = [ ];

注意此时数组array的末端相当于栈的顶端。
接下来,为我们的栈声明一些方法:

  • push():添加一个(或几个)新元素到栈顶
  • pop():移除栈顶的元素,同时返回被移除的元素
  • peek():获取栈顶的元素,不对栈做出任何修改
  • isEmpty():如果栈里没有任何元素就返回true,否则返回false
  • clear():清空栈
  • size():返回栈元素的个数
function Stack(){

    var array = [];  //定义内部数组用来存储数据,用数组的末端来模拟堆栈的顶端

    this.push = function(data){   //添加元素到栈顶
        array.push(data);
    }

    this.pop = function(){  //移除栈顶元素
        return array.pop();
    }

    this.isEmpty = function(){  //判断栈是否为空
        if(array.length == 0){
            return true;
        }
        return false;
    }

    this.peek = function(){      //返回栈顶的元素
        return array[array.length-1];
    }

    this.clear = function(){  //清除栈里的元素
        array = [];
    }

    this.size = function(){  //返回栈中元素的个数
        return array.length;
    }

    this.print = function(){               //打印栈的元素
        console.log(array.toString());
    }

}

var stack = new Stack();  //实例化了栈
stack.push("haha");  //添加元素
stack.push("lala");
console.log(stack.isEmpty());  //看栈是否为空
console.log(stack.peek());//返回栈顶的元素
console.log(stack.size());//返回栈中元素的个数
stack.print(); //打印栈的元素
stack.clear(); // 清除栈的元素
console.log(stack.isEmpty()); //看此时栈是否为空

以下是在chrome的控制台进行实例化的测试,结果无误。

时间: 2024-09-30 20:07:51

javascript数据结构之栈。的相关文章

[C++/JavaScript]数据结构:栈和数列>案例引入

1 案例1:数制的转换 1.1 背景与原理 1.2 编程复现 (JavaScript版 复现) function convert(value, d){ stack = []; // 栈 result = []; // 一般线性表 or 队列 while(value!=0){ mod = value%d; value = Math.floor(value/d); // 整除 (向下取整) stack.push(mod); } while(stack.length!=0){ result.push(

Javascript数据结构之栈

作者原文:http://hawkzz.com/blog/blog/1515054561771 定义 栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种先入后出的数据结构: 由于栈具有先入后出,后入先出的特点,所以在任何不在栈顶的元素都无法访问,为了得到栈底的元素,必须先拿掉上面的元素.对栈的两种主要操作是一个元素压入栈和将一个元素弹出栈: 原理 栈的实现 1.创建Stack构造函数: function Stack() { this.dataList = []; t

JavaScript 数据结构与算法之美 - 栈内存与堆内存 、浅拷贝与深拷贝

前言 想写好前端,先练好内功. 栈内存与堆内存 .浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算法和方便以后复习. 栈 定义 后进者先出,先进者后出,简称 后进先出(LIFO),这就是典型的栈结构. 新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底. 在栈里,新元素都靠近栈顶,旧元素都接近栈底. 从栈的操作特性来看,是一种 操作受限的线性表,只允许在

《数据结构与算法JavaScript描述》- 栈

栈是和列表类似的一种数据结构,是一种特殊的列表,可解决计算机世界里很多问题 栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快 栈内的元素只能通过列表的一端访问,这一端称为栈顶 栈是一种后入先出(LIFO,last-in-first-out)的数据结构 对栈的两种主要操作是将一个元素压栈和弹栈,另一个常用操作是预览栈顶的元素 实现一个栈当务之急是决定存储数据的底层数据结构,这里采用数组 function Stack() { this.dataStore = []; // 存

javascript中的栈、队列。

                       javascript中的栈.队列 栈方法     栈是一种LIFO(后进先出)的数据结构,在js中实现只需用到2个函数 push()  接受参数并将其放置数组尾,并返回修改后的数组长度. pop()  移除数组尾的最后一项,并返回移除项的值. 事例: var colors = new Array();var count = colors.push("red","green"); count = colors.push(&

JavaScript数据结构——队列的实现

前面楼主简单介绍了JavaScript数据结构栈的实现,http://www.cnblogs.com/qq503665965/p/6537894.html,本次将介绍队列的实现. 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的端称为队头. 队列的两种主要操作是:向队列中插入新元素和删除队列中的元素.插入操作也叫做入队,删除操作也叫做出队.入队操

javascript数据结构与算法---队列

队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素反而被优先处理.我们现在可以把队列想象对我们去餐馆吃饭的情景,很多人排队吃饭,排在最前面的人先打饭.新来的人只能在后面排队.直到轮到他们为止. 一:对队列的操作 队列有2种主要的操作,向队尾中插入新元素enqueue()方法和删除队列中的队首的元素的dequeue()方法,另外我们还有一个读取队头的元素,这个方法我们可以叫front()方法.该

javascript数据结构-介绍

github博客地址 名词解释 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和索引技术有关. 数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构. 上面都是书面术语定义解释,虽然通常说得非人话,但是这里也很直白.浅显易懂了. 数据的逻辑结构 集合数据结构中的元素之间除了"同属一个集合&qu

javascript数据结构和算法 零(前记+序言)

前记 这本书Data Structure and Algorithm with Javascript 我将其翻译成<< javascript 数据结构和算法>> 为什么这么翻译?而不是翻译成"用javascript实现数据结构和算法" 原因有二: 一个,我觉的它更加简洁,第二个,我是想强调我们在这里使用的是javascript. 我不喜欢一些翻译的人把一个简单的语句进行加工,搞得晦涩难懂.我更喜欢外国人写书的 那种原汁原味.同样,我很喜欢外国人的那种分享精神,它