常见数据结构之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. Axis2测试webservice server以及client

    一.环境搭建 下载axis2-1.6.2-war.zip/axis2-1.6.2-bin.zip等. 参考axis2-1.6.2-war\README.txt以及axis2-1.6.2-war\axi ...

  2. 生成highcharts报表时对数据没有用= eval('([' + seriesArray+ '])')处理生成数组,而是简单的拼成字符串,结果导致大量的场景出现

    <script type="text/javascript"> //异步初始周达成率趋势图信息 function goFinishQuery() { var yearN ...

  3. 数据库Mysql学习笔记(一)

    Mysql 数据库是数据库初学者最佳的选择的,其语法简单,采用的非底层的SQL语言定义(DDL).操作(DML).控制(DCL)数据库. 入门知识:服务器.库.表. (1)安装Mysql服务器.配置文 ...

  4. Linux Shell 2>&1 &

    转  脚本如: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对 于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就 ...

  5. Android TextView设置多彩文字

    在应用开发中时常会遇到需要在一段文字中插入几个不一样颜色文字的需求; 以前本人都是用多个TextView拼起来,不仅感觉很蠢,操作起来也蛮恶心; 直到接触到了SpannableStringBuilde ...

  6. system_call中断处理过程分析

    本文所有的分析内容都是基于Linux3.18.6内核,鉴于对应不同内核版本,系统调用的实现不相同.若需要分析其他版本内核的系统调用的实现过程,请谨慎参考. system_call函数的功能是用来响应外 ...

  7. Qt for Android开发Android应用时的各种错误汇总(此片博文不成熟,请大家略过)

    “Qt for Android真的很脆弱,项目能跑起来靠的是奇迹,跑不起来,各种报错才是正常...” 问题一:Qt for Android编译不过:make (e=2): 系统找不到指定的文件. 之前 ...

  8. 如何执行字符串的PHP代码

    如何执行字符串的PHP代码 最近因项目需要,引出一个议题:如何执行字符串的php代码(php和html混写). 注:传统情况下,php代码存储在文件中,直接运行文件即可.以下讨论的情况是,如果php代 ...

  9. PHP实现文本快速查找 - 二分查找

    PHP实现文本快速查找 - 二分查找法 起因 先说说事情的起因,最近在分析数据时经常遇到一种场景,代码需要频繁的读某一张数据库的表,比如根据地区ID获取地区名称.根据网站分类ID获取分类名称.根据关键 ...

  10. java的(PO,VO,TO,BO,DAO,POJO)解释

    java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定, ...