Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Insert at Beginning Head Insert in DSA Typescript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Insert at Beginning Head Insert
O(1)
Understanding Time Complexity

We want to understand how long it takes to add a new item at the start of a linked list.

How does the time needed change as the list grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


class Node {
  value: number;
  next: Node | null = null;
  constructor(value: number) {
    this.value = value;
  }
}

class LinkedList {
  head: Node | null = null;
  insertAtBeginning(value: number): void {
    const newNode = new Node(value);
    newNode.next = this.head;
    this.head = newNode;
  }
}
    

This code adds a new node at the start of a linked list by adjusting pointers.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Creating a new node and updating pointers.
  • How many times: This happens once per insertion, no loops or recursion involved.
How Execution Grows With Input

Adding a node at the start always takes the same steps, no matter how big the list is.

Input Size (n)Approx. Operations
103 steps (create node, set next, update head)
1003 steps (same as above)
10003 steps (same as above)

Pattern observation: The number of steps stays the same regardless of list size.

Final Time Complexity

Time Complexity: O(1)

This means adding at the start takes a fixed amount of time no matter how big the list is.

Common Mistake

[X] Wrong: "Adding at the beginning takes longer as the list grows because we have to move all nodes."

[OK] Correct: We only change a couple of pointers; we do not move or visit other nodes.

Interview Connect

Knowing that inserting at the head is quick helps you choose the right data structure for fast additions.

Self-Check

"What if we changed to insert at the end of the list? How would the time complexity change?"

Practice

(1/5)
1. What does the "Insert at Beginning" operation do in a singly linked list?
easy
A. Adds a new node at the start of the list
B. Adds a new node at the end of the list
C. Deletes the first node of the list
D. Deletes the last node of the list

Solution

  1. Step 1: Understand the operation

    Inserting at the beginning means adding a new node before the current first node.
  2. Step 2: Effect on the list

    The new node becomes the head, pushing the old head to second position.
  3. Final Answer:

    Adds a new node at the start of the list -> Option A
  4. Quick Check:

    Insert at beginning = Add new head [OK]
Hint: Insert at beginning means new head node [OK]
Common Mistakes:
  • Confusing insert at beginning with insert at end
  • Thinking it deletes nodes
  • Assuming it changes the tail node
2. Which of the following is the correct TypeScript syntax to insert a new node at the beginning of a singly linked list?
easy
A. newNode = head; head.next = newNode;
B. head = newNode.next; newNode = head;
C. head.next = newNode; newNode = head;
D. newNode.next = head; head = newNode;

Solution

  1. Step 1: Link new node to current head

    Set newNode.next to point to current head node.
  2. Step 2: Update head to new node

    Assign head to newNode so it becomes the first node.
  3. Final Answer:

    newNode.next = head; head = newNode; -> Option D
  4. Quick Check:

    Link new node to head, then update head [OK]
Hint: Set newNode.next to head, then head = newNode [OK]
Common Mistakes:
  • Assigning head before linking newNode.next
  • Swapping assignments order
  • Using head.next instead of newNode.next
3. What will be the linked list after executing the following TypeScript code?
class Node {
  value: number;
  next: Node | null = null;
  constructor(value: number) { this.value = value; }
}

let head: Node | null = new Node(10);
let newNode = new Node(5);
newNode.next = head;
head = newNode;
medium
A. 10 -> null
B. 10 -> 5 -> null
C. 5 -> 10 -> null
D. 5 -> null

Solution

  1. Step 1: Initial list setup

    head points to node with value 10, next is null.
  2. Step 2: Insert newNode at beginning

    newNode (5) points to head (10), then head updated to newNode.
  3. Final Answer:

    5 -> 10 -> null -> Option C
  4. Quick Check:

    New node 5 becomes head, points to 10 [OK]
Hint: New node points to old head, then becomes new head [OK]
Common Mistakes:
  • Confusing order of nodes after insertion
  • Forgetting to update head
  • Assuming newNode.next is null
4. Identify the error in this TypeScript code that tries to insert a node at the beginning of a linked list:
class Node {
  value: number;
  next: Node | null = null;
  constructor(value: number) { this.value = value; }
}

let head: Node | null = null;
let newNode = new Node(7);
head.next = newNode;
head = newNode;
medium
A. head is null, so head.next causes an error
B. newNode is not linked to head
C. head should be assigned before newNode.next
D. Missing constructor call for newNode

Solution

  1. Step 1: Check initial head value

    head is null, so accessing head.next is invalid and causes runtime error.
  2. Step 2: Correct insertion approach

    Assign newNode.next = head (which is null), then head = newNode.
  3. Final Answer:

    head is null, so head.next causes an error -> Option A
  4. Quick Check:

    Cannot access property on null head [OK]
Hint: Check if head is null before accessing head.next [OK]
Common Mistakes:
  • Trying to access next on null head
  • Not linking newNode.next to head
  • Assigning head after using head.next
5. Given a singly linked list with nodes 20 -> 30 -> 40 -> null, what will be the list after inserting 10 at the beginning using head insert method?
hard
A. 20 -> 30 -> 40 -> 10 -> null
B. 10 -> 20 -> 30 -> 40 -> null
C. 30 -> 40 -> 10 -> 20 -> null
D. 10 -> 30 -> 40 -> 20 -> null

Solution

  1. Step 1: Understand initial list

    List is 20 -> 30 -> 40 -> null, head points to 20.
  2. Step 2: Insert 10 at beginning

    Create new node 10, set newNode.next = head (20), then head = newNode.
  3. Final Answer:

    10 -> 20 -> 30 -> 40 -> null -> Option B
  4. Quick Check:

    New node 10 becomes head, old list follows [OK]
Hint: New node points to old head, becomes new head [OK]
Common Mistakes:
  • Appending new node at end instead of beginning
  • Mixing node order after insertion
  • Not updating head pointer
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard