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.swift
final class Node {
let value: Int
var next: Node?
init(_ value: Int, _ next: Node? = nil) {
self.value = value
self.next = next
}
}
func render(_ head: Node?) -> String {
var parts: [String] = []
var cursor = head
while cursor != nil {
parts.append(String(cursor!.value))
cursor = cursor!.next
}
return parts.joined(separator: " -> ") + " -> null"
}
var head: Node? = Node(20, Node(30))
let newHead = Node(10)
newHead.next = head
head = newHead
print(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.