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.php
<?php
class Node {
public int $value;
public ?Node $next;
public function __construct(int $value, ?Node $next = null) {
$this->value = $value;
$this->next = $next;
}
}
function render_chain(?Node $head): string {
$parts = [];
$cursor = $head;
while ($cursor !== null) {
$parts[] = (string)$cursor->value;
$cursor = $cursor->next;
}
return implode(" -> ", $parts) . " -> null";
}
$head = new Node(20, new Node(30));
$newHead = new Node(10);
$newHead->next = $head;
$head = $newHead;
echo render_chain($head) . PHP_EOL;
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.