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节点类