最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用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類表示節(jié)點(diǎn)

/**
 * Node 類用來(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類提供對(duì)鏈表操作的方法
/**
 * LList 類提供了對(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)文章

最新評(píng)論

泽普县| 蕲春县| 漳平市| 铜鼓县| 保德县| 红河县| 太和县| 永新县| 邹城市| 青田县| 武乡县| 秭归县| 曲靖市| 冀州市| 瑞丽市| 黎城县| 大新县| 开原市| 宁明县| 精河县| 隆德县| 磴口县| 和顺县| 青州市| 香格里拉县| 达日县| 凤山县| 宾阳县| 玛多县| 德清县| 广丰县| 云安县| 肇源县| 库车县| 台北县| 车险| 海门市| 霍邱县| 灵石县| 澳门| 博湖县|