Javascript與數據結構系列(三)——鏈表的實現

鏈表實現

設計一個基於對象的鏈表 咱們設計的鏈表包含兩個類。前端

  • Node 類用來表示節點函數

  • LinkedList 類提供了插入節點、刪除節點、顯示列表元素的方法,以及其餘一些輔助方法。this

Node類

Node 類包含兩個屬性:element 用來保存節點上的數據,next 用來保存指向下一個節點的
連接。咱們使用一個構造函數來建立節點,該構造函數設置了這兩個屬性的值:spa

function Node(element) {
    this.element = element;
    this.next = null;
 }

LinkedList類

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

相關文章
相關標籤/搜索