Linked List Learning

An interactive playground for linked lists. Write JavaScript to manipulate the list object — the diagram updates live after each run. Pick a template to get started, or write your own code. Click a node to inspect it; drag to reorder; hover a node for edit and delete icons.

REPL

Templates
Quick Reference
list.append(v) Add v to tail
list.prepend(v) Add v to head
list.insertAt(i, v) Insert at index i
list.delete(v) Remove first node with value v
list.deleteAt(i) Remove node at index i
list.find(v) Returns index of v, or -1
list.get(i) Value at index i
list.set(i, v) Set value at index i
list.reverse() Reverse in place
list.length() Number of nodes
list.toArray() Returns JS array of values
list.clear() Empty the list
list.head First Node (has .value, .next)
console.log(…) Print to output panel
Quick Reference
list.append(v) Add v to tail
list.prepend(v) Add v to head
list.insertAt(i, v) Insert at index i
list.delete(v) Remove first node with value v
list.deleteAt(i) Remove node at index i
list._unlink(node) Unlink a node object directly
list.find(v) Returns index of v, or -1
list.get(i) Value at index i
list.set(i, v) Set value at index i
list.reverse() Reverse in place (rewires prev/next)
list.length() Number of nodes
list.toArray() Forward traversal as array
list.toArrayReverse() Backward traversal via .prev
list.clear() Empty the list
list.head First node (has .value, .prev, .next)
list.tail Last node (has .value, .prev, .next)
console.log(…) Print to output panel

Diagram

Nodes: 0

Output