demo如下
function ListNode(key) {
this.key = key
this.next = null
this.prev = null
}
class DoubleLinkedList {
constructor() {
this.head = null
}
// node2 head =node1
// node.next = null
// node.prev = node1
// node1 prev = null
// node.next =
insert(node) {
if ( this.head !== null ) {
node.prev = this.head
this.head.next = node
}
this.head = node
}
// node.prev next - node.next
// node.next prev = node.prev
delete(node) {
node.prev.next = node.next
node.next.prev = node.prev
node.prev = null
node.next = null
}
find(node) {
let p = this.head
while ( p && p !== node ) {
p = p.prev
}
return p || null;
}
}
let list = new DoubleLinkedList()
const node1 = new ListNode('00')
const node2 = new ListNode('kk')
const node3 = new ListNode('bzg')
list.insert(node1)
list.insert(node2)
list.insert(node3)
// 输出kk
console.log(list.find(node2).key)
list.delete(node2)
// 输入null
console.log(list.find(node2))
console.log(node2)
// node1的下一个由2变成了3
console.log(node1)
// node3的上一个由2变成了1
console.log(node3)