What does the 'push' operation do in a linked list?
It adds a new node at the beginning (head) of the linked list, making it the new first element.
Click to reveal answer
beginner
In a singly linked list, what pointer does the new node's 'next' field point to during a push?
It points to the current head node of the list before the new node becomes the head.
Click to reveal answer
intermediate
Why is pushing a node at the head of a linked list efficient?
Because it only requires changing a few pointers and does not need to traverse the list, so it runs in constant time O(1).
Click to reveal answer
intermediate
Show the step-by-step pointer changes when pushing a new node with value 5 onto a linked list with head node value 10.
1. Create new node with value 5. 2. Set new node's next pointer to current head (node with value 10). 3. Update head pointer to new node (value 5). Resulting list: 5 -> 10 -> null
Click to reveal answer
beginner
What is the initial head pointer value when the linked list is empty?
It is null (or nullptr in C++), meaning the list has no nodes.
Click to reveal answer
What is the time complexity of pushing a node at the head of a singly linked list?
AO(log n)
BO(n)
CO(n^2)
DO(1)
✗ Incorrect
Pushing at the head only changes pointers and does not require traversal, so it is constant time O(1).
When pushing a new node, what should the new node's next pointer be set to?
ACurrent head node
BItself
CTail node
DNull
✗ Incorrect
The new node's next pointer must point to the current head to insert it at the beginning.
If the linked list is empty, what will the head pointer be after pushing a new node?
APoints to old head
BNull
CPoints to the new node
DUndefined
✗ Incorrect
When the list is empty, pushing a node makes the head point to the new node.
Which of these is NOT a step in pushing a node onto a linked list?
ACreate new node
BTraverse to the end of the list
CSet new node's next to current head
DUpdate head to new node
✗ Incorrect
Pushing at head does not require traversal; it only updates pointers at the start.
After pushing nodes with values 3, then 7, then 1 onto an empty list, what is the order of nodes?
A1 -> 7 -> 3 -> null
B3 -> 7 -> 1 -> null
C7 -> 3 -> 1 -> null
D1 -> 3 -> 7 -> null
✗ Incorrect
Each push adds a node at the head, so the last pushed node (1) is first, then 7, then 3.
Explain how the push operation works in a singly linked list using a real-life analogy.
Think about adding a new book on top of a stack of books.
You got /4 concepts.
Describe the steps and pointer changes when pushing a new node onto a linked list that already has nodes.
Focus on how the new node connects to the existing list.
You got /3 concepts.
Practice
(1/5)
1. What does the push operation do in a linked list when using nodes?
easy
A. Deletes the entire linked list
B. Removes the last node from the list
C. Searches for a node with a specific value
D. Adds a new node at the beginning of the list
Solution
Step 1: Understand push operation in linked list
The push operation inserts a new node at the start (head) of the linked list.
Step 2: Effect of push on list structure
The new node becomes the head, and its next pointer points to the previous head node.
Final Answer:
Adds a new node at the beginning of the list -> Option D
Quick Check:
Push means insert at head = D [OK]
Hint: Push always adds node at the start (head) [OK]
Common Mistakes:
Confusing push with pop (removal)
Thinking push adds at the end
Mixing push with search or delete
2. Which of the following is the correct syntax to create a new node and push it at the head in C++ linked list?
easy
A. Node* newNode = new Node(data); newNode->next = head; head = newNode;
B. Node newNode = Node(data); head = newNode.next;
C. newNode = Node(data); newNode.next = head; head = newNode;
D. Node* newNode = Node(data); head = newNode->next;
Solution
Step 1: Create new node dynamically
Use new Node(data) to allocate memory and initialize node.
Step 2: Link new node to current head and update head
Set newNode->next = head and then head = newNode to push at front.
Final Answer:
Node* newNode = new Node(data); newNode->next = head; head = newNode; -> Option A
Quick Check:
Dynamic allocation + pointer update = B [OK]
Hint: Use pointer and 'new' keyword to create and link node [OK]
Common Mistakes:
Not using pointer (*) for new node
Using dot (.) instead of arrow (->) for pointers
Assigning head incorrectly
3. What will be the output linked list after executing this code?
struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
Node* head = nullptr;
// Push 10
Node* newNode1 = new Node(10);
newNode1->next = head;
head = newNode1;
// Push 20
Node* newNode2 = new Node(20);
newNode2->next = head;
head = newNode2;
// Push 30
Node* newNode3 = new Node(30);
newNode3->next = head;
head = newNode3;
// Print list
Node* temp = head;
while(temp != nullptr) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "null";
medium
A. 10 -> 20 -> 30 -> null
B. 30 -> 20 -> 10 -> null
C. 20 -> 30 -> 10 -> null
D. null
Solution
Step 1: Trace push operations
First push 10: list is 10 -> null. Then push 20: list becomes 20 -> 10 -> null. Then push 30: list becomes 30 -> 20 -> 10 -> null.
Step 2: Print linked list
Printing from head prints 30, then 20, then 10, then null.
Final Answer:
30 -> 20 -> 10 -> null -> Option B
Quick Check:
Push adds at head, last pushed is first = C [OK]
Hint: Last pushed node appears first in list [OK]
Common Mistakes:
Assuming push adds at tail
Mixing order of nodes
Not updating head pointer correctly
4. Identify the error in this push function for a singly linked list:
void push(Node* head, int data) {
Node* newNode = new Node(data);
newNode->next = head;
head = newNode;
}
medium
A. head is passed by value, so original list head is not updated
B. newNode is not allocated dynamically
C. newNode->next should be nullptr
D. Function should return void* instead of void
Solution
Step 1: Analyze parameter passing
head is passed by value, so changes inside function do not affect original head pointer.
Step 2: Effect on linked list
Assigning head = newNode only changes local copy; original list head remains unchanged.
Final Answer:
head is passed by value, so original list head is not updated -> Option A
Quick Check:
Pass pointer by reference or pointer to pointer [OK]
Hint: Pass head by reference or pointer to update original [OK]
Common Mistakes:
Ignoring parameter passing method
Not returning new head if passed by value
Incorrect pointer usage
5. You want to implement a stack using a singly linked list with push operation. Which approach correctly maintains the stack's LIFO order?
hard
A. Push new nodes at the tail and update head pointer
B. Push new nodes at the tail of the linked list without tail pointer
C. Push new nodes at the head of the linked list
D. Insert new nodes randomly in the list
Solution
Step 1: Understand stack LIFO behavior
Stack requires last-in, first-out order, so newest element must be accessed first.
Step 2: Push at head maintains LIFO
Adding new nodes at head means newest node is always at front, enabling O(1) push and pop.
Step 3: Problems with tail insertion
Inserting at tail without tail pointer is inefficient and does not maintain LIFO easily.
Final Answer:
Push new nodes at the head of the linked list -> Option C
Quick Check:
Stack push = insert at head = A [OK]
Hint: Stack push uses head insertion for O(1) LIFO [OK]
Common Mistakes:
Pushing at tail without tail pointer (slow)
Not maintaining LIFO order
Inserting nodes randomly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.