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.pl
use strict;
use warnings;
sub node {
my ($value, $next) = @_;
return { value => $value, next => $next };
}
sub render {
my ($head) = @_;
my @parts;
my $cursor = $head;
while (defined $cursor) {
push @parts, $cursor->{value};
$cursor = $cursor->{next};
}
return join(" -> ", @parts) . " -> null";
}
my $head = node(20, node(30, undef));
my $new_head = node(10, undef);
$new_head->{next} = $head;
$head = $new_head;
print render($head), "\n";
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.