您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么使用JavaScript實現鏈表的數據結構的代碼,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
鏈表(Linked list)是一種常見的基礎數據結構,是一種線性表,但是并不會按線性的順序存儲數據,而是在每一個節點里存到下一個節點的指針(Pointer) — 維基百科
上面是維基百科對 鏈表 的解讀。下面我們用 JavaScript 代碼對鏈表的數據結構進行實現
實現Node類表示節點
/** * Node 類用來表示節點 * element 用來保存節點上的數據 * next 用來保存指向下一個節點的鏈接 */ function Node(element) { this.element = element; this.next = null; } LList類提供對鏈表操作的方法 /** * LList 類提供了對鏈表進行操作的方法 * 鏈表只有一個屬性, * 使用一個 Node 對象來保存該鏈表的頭節點。 */ class LList { constructor() { this.head = new Node('head'); } // 查找節點 find(item) { let currNode = this.head; while(currNode.element !== item) { currNode = currNode.next; } return currNode; } // 查找前一個節點 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; } // 插入新節點 insert(newElement, item) { let newNode = new Node(newElement); let currNode = this.find(item); newNode.next = currNode.next; currNode.next = newNode; } // 刪除一個節點 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; } } }
測試代碼
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實現鏈表的數據結構的代碼”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。