鏈表是由一組
節點
組成的集合。數據結構
實現ide
咱們設計的鏈表包含兩個類。Node類用來表示節點,LinkedList類提供了插入節點、刪除節點、顯示列表元素的方法,以及一些輔助方法。this
Node類spa
Node類包含連個屬性:element用來保存節點上的數據,next用來保存指向下一個節點的連接。操作系統
class Node { constructor (element) { this.element = element this.next = null } }
LinkedList類設計
class LinkedList { constructor () { this.head = new Node('head') } // 查找節點 find (item) { let currNode = this.head while (currNode.element != item) { currNode = currNode.next } return currNode } // 插入 insert (newElement, item) { let newNode = new Node(newElement) let current = this.find(item) newNode.next = current.next current.next = newNode } // 顯示鏈表中的元素 display () { let currNode = this.head while (currNode.next !== null) { console.log(currNode.next.element) } currNode = currNode.next } // 刪除 remove () { } }
雙向鏈表code
每個節點有一個previous指向前一個節點隊列
循環鏈表進程
建立的時候須要element
this.head.next = this.head
插入元素以後,鏈表的末端指向鏈表的頭部。
隊列是一種列表,不一樣的是隊列只能在隊尾插入元素,在隊首刪除元素。隊列是一種先進先出的數據結構。
用途:
實現
class Queue { constructor () { this.dataStore = [] } // 向隊尾添加一個元素 enqueue (element) { this.dataStore.push(element) } // 向隊首刪除一個元素 dequeue () { return this.dataStore.shift() } // 讀取隊首的元素 front () { return this.dataStore[0] } // 讀取隊尾的元素 back () { return this.dataStore[this.dataStore.length - 1] } }