單向鏈表

代碼

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

class linkList {
    constructor(){
        this.head = new Node('head');
    }

    findPrevious(element) {
        let currentNode = this.head;
        while (currentNode.next !== null && currentNode.next.element != element) {
            currentNode = currentNode.next;
        }
        return currentNode;
    }

    find(element){
        let  currentNode = this.head;
        while (currentNode.element != element) {
            currentNode = currentNode.next;
        }
        return currentNode;
    }

    insert(newElement, afterElement){
        let newNode = new Node(newElement);
        let currentNode = this.find(afterElement);
        newNode.next = currentNode.next;
        currentNode.next = newNode;
    }

    remove(element){
        let previousNode = this.findPrevious(element);
        let currentNode = this.find(element);
        previousNode.next = currentNode.next;
    }

    display(){
        let currentNode = this.head;
        while (urrentNode.next !== null) {
            console.log(currentNode);
            currentNode = currentNode.next;
        }
    }
}

let cities = new linkList();
cities.insert('Conway', 'head');
cities.insert('Russellville', 'Conway');
cities.insert('Alma', 'Russellville');
cities.display();
cities.remove('Alma');
複製代碼

結果

Node {
  element: 'head',
  next:
   Node {
     element: 'Conway',
     next: Node { element: 'Russellville', next: [Node] } } }
Node {
  element: 'Conway',
  next:
   Node {
     element: 'Russellville',
     next: Node { element: 'Alma', next: null } } }
Node {
  element: 'Russellville',
  next: Node { element: 'Alma', next: null } }
複製代碼
相關文章
相關標籤/搜索