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.sh
#!/usr/bin/env bash
set -euo pipefail
render() {
local idx="$1"
local out=""
while [[ "$idx" != "-1" ]]; do
if [[ -n "$out" ]]; then out+=" -> "; fi
out+="${value[$idx]}"
idx="${next[$idx]}"
done
printf '%s -> null\n' "$out"
}
declare -A value
declare -A next
value[2]=20; next[2]=3
value[3]=30; next[3]=-1
head=2
value[1]=10; next[1]="$head"
head=1
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.