常见数据结构之JavaScript实现
随着前端技术的不断发展,投入到前端开发的人数也越来越多,招聘的前端职位也越来越火,大有前几年iOS开发那阵热潮。早两年,前端找工作很少问到关于数据结构和算法的,一般都围绕前端的基本知识和项目经历来问,但是随着这几年前端人数的激增,越来越多的用人单位在招聘过程中开始考察前端求职者的数据结构和算法知识功底了。笔者在去年求职的过程当中就曾多次碰到要求实现各类排序算法和二叉树等数据结构的面试题。本文简要介绍常见的数据结构在JavaScript中的实现。(基本算法已经由师兄在他的博客中写过了,可以移步这里。如果你期望看到面试中常见的前端知识点的题目,可以移步这里。)
1、数组
数组是JavaScript数据结构实现最基本的知识,由于我之前总结过一篇关于数组的基本知识,因此不再赘述,大家可以参考这里《javascript常用数组算法总结》。
2、栈
定义:栈是一种遵从后进先出(LIFO)原则的有序集合。
方法描述:push-添加一个或几个元素到栈顶;pop-移除站定的元素;peek-返回栈顶元素,从栈里不删除该元素;isEmpty-判断栈是否为空;clear-清除栈;size-栈的大小;print-打印栈。
实现:
1 function Stack () { 2 var items = []; //用于存放栈内元素 3 4 this.push = function (ele) { 5 items.push(ele); 6 }; 7 8 this.pop = function () { 9 return items.pop(); 10 }; 11 12 this.peek = function () { 13 return items[items.length-1]; 14 }; 15 16 this.isEmpty = function () { 17 return items.length === 0; 18 }; 19 20 this.size = function () { 21 return items.length; 22 }; 23 24 this.clear = function () { 25 items = []; 26 }; 27 28 this.print = function () { 29 console.log(items.toString()); 30 }; 31 }
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.图