What is the time complexity of inserting a node at the beginning of a singly linked list?
AO(n)
BO(1)
CO(log n)
DO(n^2)
✗ Incorrect
Inserting at the beginning only changes a few pointers, so it takes constant time O(1).
Which pointer must be updated to insert a new node at the beginning of a linked list?
AThe head pointer
BThe tail pointer
CThe next pointer of the last node
DThe previous pointer
✗ Incorrect
The head pointer must point to the new node after insertion.
After inserting a new node at the beginning, what does the new node's next pointer point to?
ANULL
BThe tail node
CThe old head node
DItself
✗ Incorrect
The new node's next pointer points to the old head node, linking the list.
Which of these is NOT needed when inserting at the beginning of a singly linked list in C?
AAllocating memory for the new node
BChanging the new node's next pointer
CUpdating the head pointer
DTraversing the entire list
✗ Incorrect
Traversing the list is not needed because insertion is at the head.
What happens if you forget to update the head pointer after inserting a new node at the beginning?
AThe list will lose the new node and may cause errors
BThe new node becomes the tail
CThe list remains unchanged
DThe list will reverse
✗ Incorrect
Without updating head, the new node is not linked as the first node, causing loss of access.
Explain step-by-step how to insert a new node at the beginning of a singly linked list in C.
Think about how pointers change to keep the list connected.
You got /4 concepts.
Describe why inserting at the beginning of a linked list is faster than inserting at the end.
Consider how many nodes you must visit for each insertion.
You got /4 concepts.
Practice
(1/5)
1. What does the "Insert at Beginning" operation do in a singly linked list?
easy
A. Deletes the first node of the list
B. Adds a new node at the end of the list
C. Adds a new node at the start of the list
D. Deletes the last node of the list
Solution
Step 1: Understand the operation
Inserting at the beginning means placing a new node before the current first node.
Step 2: Effect on the list
The new node becomes the head, pushing the old head to second position.
Final Answer:
Adds a new node at the start of the list -> Option C
Quick Check:
Insert at beginning = Add new head [OK]
Hint: New node becomes head, old head moves next [OK]
Common Mistakes:
Confusing insert at beginning with insert at end
Thinking it deletes nodes
Assuming it inserts in the middle
2. Which of the following is the correct syntax to insert a new node at the beginning in C for a singly linked list?
easy
A. newNode->next = head; head = newNode;
B. head = newNode->next; newNode = head;
C. head->next = newNode; newNode = head;
D. newNode = head; head->next = newNode;
Solution
Step 1: Assign newNode's next to current head
This links the new node to the existing list.
Step 2: Update head to newNode
Now the new node is the first node in the list.
Final Answer:
newNode->next = head; head = newNode; -> Option A
Quick Check:
Link newNode to head, then update head [OK]
Hint: Point newNode->next to head, then head to newNode [OK]
Common Mistakes:
Swapping assignments order
Assigning head to newNode->next incorrectly
Not updating head pointer
3. What will be the linked list after inserting nodes with values 10, then 20, then 30 at the beginning in that order? Assume the list was initially empty.
medium
A. 10 -> 20 -> 30 -> null
B. 10 -> 30 -> 20 -> null
C. 20 -> 30 -> 10 -> null
D. 30 -> 20 -> 10 -> null
Solution
Step 1: Insert 10 at beginning
List becomes 10 -> null.
Step 2: Insert 20 at beginning
List becomes 20 -> 10 -> null.
Step 3: Insert 30 at beginning
List becomes 30 -> 20 -> 10 -> null.
Final Answer:
30 -> 20 -> 10 -> null -> Option D
Quick Check:
Last inserted is new head [OK]
Hint: Last inserted node is always head [OK]
Common Mistakes:
Assuming insertion at end
Reversing insertion order
Confusing node values order
4. Given the following code snippet, what is the error that prevents correct insertion at the beginning?
B. newNode->next should point to current head before updating head
C. newNode->data is not assigned
D. head pointer should not be double pointer
Solution
Step 1: Check newNode->next assignment
It is set to NULL, losing the existing list.
Step 2: Correct linking
newNode->next should point to current head before head is updated.
Final Answer:
newNode->next should point to current head before updating head -> Option B
Quick Check:
Link newNode->next to old head before head update [OK]
Hint: Link newNode->next to old head before head update [OK]
Common Mistakes:
Setting newNode->next to NULL always
Not using double pointer for head
Forgetting to assign data
5. You have a singly linked list with nodes: 5 -> 15 -> 25 -> null. You want to insert a new node with value 10 at the beginning. After insertion, what will be the correct sequence of nodes?
hard
A. 10 -> 5 -> 15 -> 25 -> null
B. 5 -> 10 -> 15 -> 25 -> null
C. 10 -> 15 -> 25 -> 5 -> null
D. 5 -> 15 -> 25 -> 10 -> null
Solution
Step 1: Current list is 5 -> 15 -> 25 -> null
This is the starting list before insertion.
Step 2: Insert 10 at beginning
New node 10 points to current head (5), then head updated to 10.
Final Answer:
10 -> 5 -> 15 -> 25 -> null -> Option A
Quick Check:
New node becomes head, old head follows [OK]
Hint: New node points to old head, becomes new head [OK]
Common Mistakes:
Inserting at wrong position
Not updating head pointer
Linking nodes incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.