数据结构之链表

87 阅读1分钟
class Node {
    constructor(el) {
        this.el = el;
        this.next = null;
    }
}



class LinkedList {
    constructor() {
        this.head = new Node("head")
    }

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

    insert(el, item) {
        const newNode = new Node(el)
        const currentNode = this.find(item)
        newNode.next = currentNode.next;
        currentNode.next = node;
    }

    remove(item) {
        const prevNode = this.findPrev(item);
        if (prevNode.next !== null) {
            let currentNode = prevNode.next
            prevNode.next = currentNode.next;
            currentNode.next = null;
        }
    }

    findPrev(item) {
        const node = this.head;
        while (node.next !== null && node.next.el !== item) {
            node = node.next;
        }
        return node;
    }

}

心得:链表总体为一个node节点类,一个存储结构类。无论是单链表,双莲表,循环单/双链表。结构类都不会有很大的改变,主要改动点是node节点类