單向鏈數據結構的 JavaScript 簡單實現

壹題git

第 115 題:寫一個單向鏈數據結構的 js 實現並標註複雜度
class LinkList {
  head: LinkNode;
  constructor() {
    this.head = null;
  }
  // O(n)
  find(value: object) {
    let currNode = this.head;
    while(currNode.value !== value) {
      currNode = currNode.next;
    }
    return currNode;
  }
  // O(n)
  findPrev(value: object) {
    let currNode = this.head;
    while (currNode.next !== null && currNode.next.value !== value) {
      currNode = currNode.next;
    }
    return currNode;
  }
  // O(n)
  delete(value: object) {
    const prevNode = this.findPrev(value);
    const currNode = prevNode.next;
    prevNode.next = currNode.next;
  }
  // O(n)
  insertAfter(newValue: object, value: object) {
    const currNode = this.find(value);
    const newNode = new NodeEle(newValue, currNode.next);
    currNode.next = newNode;
    return newNode;
  }
  // O(n)
  insertBefore(newValue: object, value: object) {
    const prevNode = this.findPrev(value);
    const newNode = new NodeEle(newValue, prevNode.next);
    prevNode.next = newNode;
    return newNode;
  }
}

interface LinkNode {
  value: object;
  next: LinkNode | null;
}

class NodeEle {
  value: object;
  next: LinkNode | null;
  constructor(value: object, next: LinkNode | null) {
    this.value = value;
    this.next = next;
  }
}
複製代碼
相關文章
相關標籤/搜索