Linked Structures
Insert at Head
Insert a new first node by pointing it at the old head and then moving the head pointer.
Algorithm
Basic Implementation
basic.scala
class Node(val value: Int, var next: Node = null)
def render(head: Node): String = {
val parts = scala.collection.mutable.ArrayBuffer[String]()
var cursor = head
while (cursor != null) {
parts += cursor.value.toString
cursor = cursor.next
}
parts.mkString(" -> ") + " -> null"
}
var head = new Node(20, new Node(30))
val newHead = new Node(10)
newHead.next = head
head = newHead
println(render(head))
Complexity
- Time: O(1)
- Space: O(1)
Implementation notes
- Keep the explicit node and pointer/reference operations; array shortcuts hide the linked-list state this lesson is meant to replay.
- The final output prints the chain in a deterministic
a -> b -> nullform for cross-language comparison.
old head
The previous first node becomes the second node.
constant-time insert
Only the new node and head pointer change.