常見數據結構之JavaScript實現javascript
隨着前端技術的不斷髮展,投入到前端開發的人數也愈來愈多,招聘的前端職位也愈來愈火,大有前幾年iOS開發那陣熱潮。早兩年,前端找工做不多問到關於數據結構和算法的,通常都圍繞前端的基本知識和項目經從來問,可是隨着這幾年前端人數的激增,愈來愈多的用人單位在招聘過程當中開始考察前端求職者的數據結構和算法知識功底了。筆者在去年求職的過程中就曾屢次碰到要求實現各種排序算法和二叉樹等數據結構的面試題。本文簡要介紹常見的數據結構在JavaScript中的實現。(基本算法已經由師兄在他的博客中寫過了,能夠移步這裏。若是你指望看到面試中常見的前端知識點的題目,能夠移步這裏。)html
一、數組前端
數組是JavaScript數據結構實現最基本的知識,因爲我以前總結過一篇關於數組的基本知識,所以再也不贅述,你們能夠參考這裏《javascript經常使用數組算法總結》。java
二、棧git
定義:棧是一種聽從後進先出(LIFO)原則的有序集合。github
方法描述: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 }
三、隊列數組
定義:隊列是遵循先進先出(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.圖