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.cs
using System;
using System.Text;
class Node {
public int Value;
public Node? Next;
public Node(int value, Node? next = null) {
Value = value;
Next = next;
}
}
class Program {
static string Render(Node? head) {
var outText = new StringBuilder();
var cursor = head;
while (cursor != null) {
if (outText.Length > 0) outText.Append(" -> ");
outText.Append(cursor.Value);
cursor = cursor.Next;
}
return outText.Append(" -> null").ToString();
}
static void Main() {
Node head = new Node(20, new Node(30));
Node newHead = new Node(10);
newHead.Next = head;
head = newHead;
Console.WriteLine(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.