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.lua
local function node(value, next)
return { value = value, next = next }
end
local function render(head)
local parts = {}
local cursor = head
while cursor ~= nil do
parts[#parts + 1] = tostring(cursor.value)
cursor = cursor.next
end
return table.concat(parts, " -> ") .. " -> null"
end
local head = node(20, node(30, nil))
local new_head = node(10, nil)
new_head.next = head
head = new_head
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.