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.cpp
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
struct Node {
int value;
Node* next;
Node(int v, Node* n = nullptr) : value(v), next(n) {}
};
string render(Node* head) {
ostringstream out;
Node* cursor = head;
while (cursor != nullptr) {
if (cursor != head) out << " -> ";
out << cursor->value;
cursor = cursor->next;
}
out << " -> null";
return out.str();
}
int main() {
Node* head = new Node(20, new Node(30));
Node* new_head = new Node(10);
new_head->next = head;
head = new_head;
cout << render(head) << endl;
}
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.