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.R
node <- function(value, next_node = NULL) {
list(value = value, nxt = next_node)
}
render <- function(head) {
parts <- c()
cursor <- head
while (!is.null(cursor)) {
parts <- c(parts, as.character(cursor$value))
cursor <- cursor$nxt
}
paste0(paste(parts, collapse = " -> "), " -> null")
}
head <- node(20, node(30))
new_head <- node(10)
new_head$nxt <- head
head <- new_head
cat(render(head), "\n", sep = "")
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.