1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| class Node { constructor(data, prev = null, next = null) { this.data = data this.prev = prev this.next = next } }
class List { constructor() { this.head = null this.tail = null this.length = 0 }
isEmpty() { return this.length == 0 }
getSize() { return this.length }
push(e) {
let node = new Node(e) let tail = this.tail if (tail !== null) { tail.next = node node.prev = tail this.tail = node } else { this.head = this.tail = node } this.length += 1 }
pop() {
let tail = this.tail if (tail !== null) { this.length -= 1 let prev = tail.prev if (prev !== null) { prev.next = null tail.prev = null this.tail = prev } else { this.head = this.tail = null } return tail }
return null }
lpush(e) { let node = new Node(e) let head = this.head if (head !== null) { head.prev = node node.next = head this.head = node } else { this.head = this.tail = node } this.length += 1 }
lpop() { let head = this.head if (head !== null) { this.length -= 1 let next = head.next if (next !== null) { head.next = null next.prev = null this.head = next } else { this.head = this.tail = null } return head } return null }
print() { let idx = 0 let head = this.head while (head !== null) { idx += 1 console.log(`idx ${idx}, data: ${head.data}`) head = head.next } } }
;(function main() { let list = new List() list.push(3) list.push(5) list.lpush(1) list.print() list.pop() list.print() })()
|