設計一個基於對象的鏈表 咱們設計的鏈表包含兩個類。前端
Node 類用來表示節點函數
LinkedList 類提供了插入節點、刪除節點、顯示列表元素的方法,以及其餘一些輔助方法。this
Node 類包含兩個屬性:element 用來保存節點上的數據,next 用來保存指向下一個節點的
連接。咱們使用一個構造函數來建立節點,該構造函數設置了這兩個屬性的值:spa
function Node(element) { this.element = element; this.next = null; }
LList 類提供了對鏈表進行操做的方法。該類的功能包括插入刪除節點、在列表中查找給 定的值。該類也有一個構造函數,鏈表只有一個屬性,那就是使用一個 Node 對象來保存該 鏈表的頭節點。
該類的構造函數以下所示:設計
function LList() { this.head = new Node("head"); this.find = find; this.insert = insert; this.remove = remove; this.display = display; }
function Node(element) { this.element = element; this.next = null; } function LList() { this.head = new Node("head"); this.find = find; this.insert = insert; this.display = display; this.findPrevious = findPrevious; this.remove = remove; } function remove(item) { var prevNode = this.findPrevious(item); if (!(prevNode.next == null)) { prevNode.next = prevNode.next.next; } } function findPrevious(item) { var currNode = this.head; while (!(currNode.next == null) && (currNode.next.element != item)) { currNode = currNode.next; } return currNode; } function display() { var currNode = this.head; while (!(currNode.next == null)) { print(currNode.next.element); currNode = currNode.next; } } function find(item) { var currNode = this.head; while (currNode.element != item) { currNode = currNode.next; } return currNode; } function insert(newElement, item) { var newNode = new Node(newElement); var current = this.find(item); newNode.next = current.next; current.next = newNode; }
固然,學好前端,你還須要關注一個公衆號!——每日前端
各位兄弟姐妹,共勉!
code