常见数据结构之JavaScript实现

  随着前端技术的不断发展,投入到前端开发的人数也越来越多,招聘的前端职位也越来越火,大有前几年iOS开发那阵热潮。早两年,前端找工作很少问到关于数据结构和算法的,一般都围绕前端的基本知识和项目经历来问,但是随着这几年前端人数的激增,越来越多的用人单位在招聘过程中开始考察前端求职者的数据结构和算法知识功底了。笔者在去年求职的过程当中就曾多次碰到要求实现各类排序算法和二叉树等数据结构的面试题。本文简要介绍常见的数据结构在JavaScript中的实现。(基本算法已经由师兄在他的博客中写过了,可以移步这里。如果你期望看到面试中常见的前端知识点的题目,可以移步这里。)

  1、数组


  数组是JavaScript数据结构实现最基本的知识,由于我之前总结过一篇关于数组的基本知识,因此不再赘述,大家可以参考这里《javascript常用数组算法总结》。

  2、栈


  定义:栈是一种遵从后进先出(LIFO)原则的有序集合。

  方法描述:push-添加一个或几个元素到栈顶;pop-移除站定的元素;peek-返回栈顶元素,从栈里不删除该元素;isEmpty-判断栈是否为空;clear-清除栈;size-栈的大小;print-打印栈。

  实现:

  

 function Stack () {
var items = []; //用于存放栈内元素 this.push = function (ele) {
items.push(ele);
}; 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());
};
}

  3、队列


  定义:队列是遵循先进先出(FIFO)原则的一组有序的集合。

方法描述:enqueue-向队尾部添加一个或多个元素;dequeue-移除队列的第一个元素并返回;first-返回队列第一个元素;isEmpty-判断队列是否为空;size-队列的大小;print-打印队列。

  实现:

function Queue() {
var items = []; //用于存放队列元素 this.enqueue= function (ele) {
items.push(ele);
}; this.dequeue= function () {
return items.shift();
}; this.first= function () {
return items[0];
}; this.isEmpty = function () {
return items.length === 0;
}; this.size = function () {
return items.length;
}; this.clear = function () {
items = [];
}; this.print = function () {
console.log(items.toString());
};
}

=================

TODO:

1.链表

2.集合

3.字典

4.树

5.图

常见数据结构之JavaScript实现的更多相关文章

  1. 8种常见数据结构及其Javascript实现

    摘要: 面试常问的知识点啊... 原文:常见数据结构和Javascript实现总结 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 做前端的同学不少都是自学成才或者半路出家, ...

  2. 前端学习总结(一)——常见数据结构的javascript实现

    1.列表类 // 列表类 function List() { this.listSize = 0; // 列表的元素个数 this.pos = 0; // 列表的当前位置 this.dataStore ...

  3. [py]软件编程知识骨架+py常见数据结构

    认识算法的重要性 - 遇到问题? 学完语言,接到需求,没思路? 1.学会了语言,能读懂别人的代码, 但是自己没解决问题的能力,不能够把实际问题转换为代码,自己写出来.(这是只是学会一门语言的后果),不 ...

  4. 转 Python常见数据结构整理

    http://www.cnblogs.com/jeffwongishandsome/archive/2012/08/05/2623660.html Python常见数据结构整理 Python中常见的数 ...

  5. unity_数据结构(常见数据结构及适用场景)

    常见的数据结构: 1.Array: 最简单的数据结构 特点:数组存储在连续的内存上.数组的内容都是相同类型.数组可以直接通过下标访问.优点:由于是在连续内存上存储的,所以它的索引速度非常快,访问一个元 ...

  6. 常见数据结构的 Python 实现(建议收藏)

    数据结构作为计算机基础的必修内容,也是很多大型互联网企业面试的必考题.可想而知,它在计算机领域的重要性. 然而很多计算机专业的同学,都仅仅是了解数据结构的相关理论,却无法用代码实现各种数据结构. 今日 ...

  7. 数据结构和算法(Golang实现)(11)常见数据结构-前言

    常见数据结构及算法 数据结构主要用来组织数据,也作为数据的容器,载体. 各种各样的算法,都需要使用一定的数据结构来组织数据. 常见的典型数据结构有: 链表 栈和队列 树 图 上述可以延伸出各种各样的术 ...

  8. 数据结构和算法(Golang实现)(12)常见数据结构-链表

    链表 讲数据结构就离不开讲链表.因为数据结构是用来组织数据的,如何将一个数据关联到另外一个数据呢?链表可以将数据和数据之间关联起来,从一个数据指向另外一个数据. 一.链表 定义: 链表由一个个数据节点 ...

  9. 数据结构和算法(Golang实现)(13)常见数据结构-可变长数组

    可变长数组 因为数组大小是固定的,当数据元素特别多时,固定的数组无法储存这么多的值,所以可变长数组出现了,这也是一种数据结构.在Golang语言中,可变长数组被内置在语言里面:切片slice. sli ...

随机推荐

  1. java开发环境

    java开发环境搭建   文中主要内容来自:http://blog.csdn.net/cxwen78/article/details/6400798 .文章对原文有所改动. 1. 开发工具获取 开发工 ...

  2. job1

    http://www.newsmth.net/nForum/#!article/Career_Upgrade/221039 http://www.newsmth.net/nForum/#!articl ...

  3. 【转】Thread.isBackground

    C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...

  4. Appweb写法

    web.xml v2.3 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web- ...

  5. 题目: 求1+2+...+n,要求不使用乘除发、for、while、if、else、switch、case、等关键字以及条件判断语句(A?B:C)

    #include <iostream> using namespace std; int add_(int a,int b){ return 0; } int Add(int i,bool ...

  6. C#常用操作类库一(验证类)

    public class Validator    {        #region  验证输入字符串为数字        /// <summary>        /// 验证输入字符串 ...

  7. SQLite数据库在多线程写锁文件的解决办法

    参考了很多SQLITE数据库多线程的解决办法 我自己写了一个SQLITEHELPER 来解决这个问题 希望大家多多指教 调用的时候  SQLLiteDBHelper _SQLLiteDBHelper ...

  8. SqlServer不能将text列类型更改为ntext的问题

    可以先将text类型更改为nvarchar,在将nvarchar更改为ntext即可. alter db_note alter column [content] nvarchar; alter db_ ...

  9. oracle远程连接配置

    今日需要对站内所有的空间数据做入库处理,所以在服务器上安装了oracle,在本地需要对其进行连接,在网上查阅了相关资料,整理如下: 远程服务端配置:1. 数据库配置    因为要为外界客户端提供数据服 ...

  10. 通过gradle来导入jar包

    1.通过gradle配置第三方jar包 我们看到,每个module都有一个build.gradle文件,它其实是对应module的配置文件.关于build.gradle文件中具体内容的含义,我们将在最 ...