欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用JavaScript實(shí)現(xiàn)鏈表的數(shù)據(jù)結(jié)構(gòu)的代碼

 更新時(shí)間:2017年08月02日 09:37:09   投稿:mrr  
鏈表(Linked list)是一種常見(jiàn)的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的指針(Pointer) 。下面我們用 JavaScript 代碼對(duì)鏈表的數(shù)據(jù)結(jié)構(gòu)進(jìn)行實(shí)現(xiàn)

鏈表(Linked list)是一種常見(jiàn)的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的指針(Pointer)   — 維基百科

上面是維基百科對(duì) 鏈表 的解讀。下面我們用 JavaScript 代碼對(duì)鏈表的數(shù)據(jù)結(jié)構(gòu)進(jìn)行實(shí)現(xiàn)

實(shí)現(xiàn)Node類(lèi)表示節(jié)點(diǎn)

/**
 * Node 類(lèi)用來(lái)表示節(jié)點(diǎn)
 * element 用來(lái)保存節(jié)點(diǎn)上的數(shù)據(jù)
 * next 用來(lái)保存指向下一個(gè)節(jié)點(diǎn)的鏈接
 */
function Node(element) {
 this.element = element;
 this.next = null;
}
LList類(lèi)提供對(duì)鏈表操作的方法
/**
 * LList 類(lèi)提供了對(duì)鏈表進(jìn)行操作的方法
 * 鏈表只有一個(gè)屬性,
 * 使用一個(gè) Node 對(duì)象來(lái)保存該鏈表的頭節(jié)點(diǎn)。
 */
class LList {
 constructor() {
  this.head = new Node('head');
 }
 // 查找節(jié)點(diǎn)
 find(item) {
  let currNode = this.head;
  while(currNode.element !== item) {
   currNode = currNode.next;
  }
  return currNode;
 }
 // 查找前一個(gè)節(jié)點(diǎn)
 findPre(item) {
  if(item === 'head') throw new Error('now is head!');
  let currNode = this.head;
  while (currNode.next && currNode.next.element !== item) {
   currNode = currNode.next;
  }
  return currNode;
 }
 // 插入新節(jié)點(diǎn)
 insert(newElement, item) {
  let newNode = new Node(newElement);
  let currNode = this.find(item);
  newNode.next = currNode.next;
  currNode.next = newNode;
 }
 // 刪除一個(gè)節(jié)點(diǎn)
 remove(item) {
  let preNode = this.findPre(item);
  if(preNode.next !== null) {
   preNode.next = preNode.next.next;
  }
 }
 // 顯示鏈表中的元素
 display() {
  let currNode = this.head;
  while(currNode.next !== null) {
   console.log(currNode.next.element);
   currNode = currNode.next;
  }
 }
}

測(cè)試代碼

const list = new LList(); 
// LList { head: Node { element: 'head', next: null } }
list.insert('0', 'head');
list.insert('1', '0');
list.insert('2', '1');
list.insert('3', '2');
list.remove('1');
console.log(list); 
// LList { head: Node { element: 'head', next: Node { element: '0', next: [Object] } } }
console.log(list.display()); // 0 2 3
console.log(list.findPre('1')); 
// Node { element: '0', next: Node { element: '1', next: Node { element: '2', next: [Object] } } }

上面就是用JavaScript對(duì)簡(jiǎn)單鏈表的數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單實(shí)現(xiàn):smile:

總結(jié)

以上所述是小編給大家介紹的使用JavaScript實(shí)現(xiàn)鏈表的數(shù)據(jù)結(jié)構(gòu)的代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 前端qrcode生成二維碼安裝及使用示例詳解

    前端qrcode生成二維碼安裝及使用示例詳解

    二維碼作為一種快速的信息識(shí)別工具,被廣泛應(yīng)用于各行各業(yè),在互聯(lián)網(wǎng)的時(shí)代,生成二維碼已經(jīng)成為了一項(xiàng)必需的技能,這篇文章主要給大家介紹了關(guān)于前端qrcode生成二維碼安裝及使用示例的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 一文教你如何優(yōu)雅的使用WebSocket

    一文教你如何優(yōu)雅的使用WebSocket

    WebSocket最大特點(diǎn)就是服務(wù)器可以主動(dòng)向客戶(hù)端推送信息,客戶(hù)端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話(huà),屬于服務(wù)器推送技術(shù)的一種,下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的使用WebSocket的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • javascript四舍五入函數(shù)代碼分享(保留后幾位)

    javascript四舍五入函數(shù)代碼分享(保留后幾位)

    這篇文章主要介紹了javascript四舍五入函數(shù)分享,大家參考使用吧
    2013-12-12
  • Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對(duì)路徑方法

    Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對(duì)路徑方法

    這篇文章主要介紹了Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對(duì)路徑方法,本文講解的方法比較特別,需要的朋友可以參考下
    2015-03-03
  • ie9 提示''console'' 未定義問(wèn)題的解決方法

    ie9 提示''console'' 未定義問(wèn)題的解決方法

    關(guān)掉開(kāi)發(fā)者工具之后,在狀態(tài)欄發(fā)現(xiàn)提示'console' 未定義,為什么之前的運(yùn)行沒(méi)有問(wèn)題,之后的就不行呢
    2014-03-03
  • 原生js做的手風(fēng)琴效果的導(dǎo)航菜單

    原生js做的手風(fēng)琴效果的導(dǎo)航菜單

    手風(fēng)琴效果的導(dǎo)航想必大家都有見(jiàn)到過(guò)吧,實(shí)現(xiàn)的方法也有很多,在本文為大家介紹下使用原生js簡(jiǎn)單實(shí)現(xiàn)下,感興趣的朋友不要錯(cuò)過(guò)
    2013-11-11
  • JavaScript中yield實(shí)用簡(jiǎn)潔實(shí)現(xiàn)方式

    JavaScript中yield實(shí)用簡(jiǎn)潔實(shí)現(xiàn)方式

    原以為是一個(gè)蠻復(fù)雜的題目,想了許久沒(méi)思路,當(dāng)然要實(shí)現(xiàn)絕對(duì)能實(shí)現(xiàn),但如果分析JavaScript腳本或是動(dòng)態(tài)產(chǎn)生代碼,都太復(fù)雜了。
    2010-06-06
  • 理解javascript函數(shù)式編程中的閉包(closure)

    理解javascript函數(shù)式編程中的閉包(closure)

    這篇文章主要幫助大家理解javascript函數(shù)式編程中的閉包(closure)概念,通俗地講, JavaScript 中每個(gè)的函數(shù)都是一個(gè)閉包,感興趣的小伙伴們可以參考一下
    2016-03-03
  • js確認(rèn)刪除對(duì)話(huà)框效果的示例代碼

    js確認(rèn)刪除對(duì)話(huà)框效果的示例代碼

    本篇文章主要是對(duì)js確認(rèn)刪除對(duì)話(huà)框效果的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-02-02
  • JavaScript中新數(shù)組分組方法詳解

    JavaScript中新數(shù)組分組方法詳解

    對(duì)數(shù)組中的項(xiàng)目進(jìn)行分組,你可能已經(jīng)做過(guò)很多次了,好消息是,JavaScript?現(xiàn)在有了分組方法,所以你再也不必這樣做了,下面我們就來(lái)看看它們的具體使用吧
    2024-02-02

最新評(píng)論