📖 Scenario: Imagine you have a stack of books represented as a linked list. You want to remove the top book from the stack safely.
🎯 Goal: You will create a linked list with three nodes, then write code to remove (pop) the top node and print the remaining list.
📋 What You'll Learn
Create a linked list with three nodes containing values 10, 20, and 30 in that order
Create a variable called head pointing to the first node
Write code to remove the first node (pop) by updating head
Print the linked list values after popping the first node
💡 Why This Matters
🌍 Real World
Linked lists are used in many programs to manage collections where items are added or removed frequently, like undo history or browser tabs.
💼 Career
Understanding how to manipulate linked lists is important for software developers working with low-level data structures, memory management, or building efficient algorithms.
Progress0 / 4 steps
1
Create the linked list nodes
Create a class called Node with an __init__ method that takes value and sets self.value and self.next to None. Then create three nodes called node1, node2, and node3 with values 10, 20, and 30 respectively. Link node1.next to node2 and node2.next to node3. Finally, create a variable called head that points to node1.
DSA Python
Hint
Remember to link nodes by setting the next attribute.
2
Prepare to pop the first node
Create a variable called temp and set it equal to head. This will temporarily hold the node to be removed.
DSA Python
Hint
Use temp = head to keep track of the node you want to remove.
3
Pop the first node by updating head
Update the variable head to point to the next node after the current head by setting head = head.next. This removes the first node from the linked list.
DSA Python
Hint
Set head to head.next to remove the first node.
4
Print the linked list after popping
Write a while loop to print the values of the linked list starting from head. Use a variable current initialized to head. In the loop, print current.value followed by ' -> ' if there is a next node, else print 'None'. Move current to current.next each iteration.
DSA Python
Hint
Use a loop to print each node's value followed by ' -> ', and end with 'None'.
Practice
(1/5)
1. What does the pop operation do in a linked list when using nodes?
easy
A. Removes the last node and returns its value
B. Adds a new node at the beginning
C. Searches for a node with a specific value
D. Counts the total number of nodes
Solution
Step 1: Understand pop operation in linked list
Pop means removing the last element from the list and returning its value.
Step 2: Identify pop behavior with nodes
In a linked list, pop removes the tail node and returns its data.
Final Answer:
Removes the last node and returns its value -> Option A
Quick Check:
Pop = Remove last node [OK]
Hint: Pop always removes the last node in a linked list [OK]
Common Mistakes:
Confusing pop with push (adding nodes)
Thinking pop removes the first node
Assuming pop searches for a value
2. Which of the following is the correct syntax to pop a node from a singly linked list in Python?
easy
A. def pop(self):\n if not self.head:\n return None\n current = self.head\n while current.next.next:\n current = current.next\n popped = current.next\n current.next = None\n return popped.data
Pop removes the last node, so we must traverse to the second last node.
Step 2: Verify syntax correctness
def pop(self):\n if not self.head:\n return None\n current = self.head\n while current.next.next:\n current = current.next\n popped = current.next\n current.next = None\n return popped.data correctly traverses until current.next.next is None, then removes last node and returns its data.
Final Answer:
Code that traverses to second last node -> Option A
Quick Check:
Traverse to second last node, remove last [OK]
Hint: Pop needs traversal to second last node before removal [OK]
Common Mistakes:
Removing head instead of last node
Not checking for empty list
Returning node instead of node data
3. What will be the output after popping a node from the linked list 1 -> 2 -> 3 -> null using the pop method below?
def pop(self):
if not self.head:
return None
if not self.head.next:
val = self.head.data
self.head = None
return val
current = self.head
while current.next.next:
current = current.next
val = current.next.data
current.next = None
return val
medium
A. 2 -> 3 -> null
B. 1 -> 3 -> null
C. 1 -> 2 -> null
D. 3 -> null
Solution
Step 1: Identify the node popped
Pop removes the last node, which is 3 in the list 1 -> 2 -> 3 -> null.
Step 2: Determine list after pop
After removing 3, the list becomes 1 -> 2 -> null.
Final Answer:
1 -> 2 -> null -> Option C
Quick Check:
Last node removed, list ends at 2 [OK]
Hint: Pop removes last node, list shortens by one [OK]
Common Mistakes:
Removing first node instead of last
Not updating next pointer to None
Returning wrong list after pop
4. Find the error in this pop method for a singly linked list with at least two nodes:
def pop(self):
current = self.head
while current.next:
current = current.next
val = current.data
current = None
return val
medium
A. It does not handle empty list case
B. It does not update the previous node's next pointer
C. It returns None instead of node data
D. It removes the head instead of last node
Solution
Step 1: Analyze traversal and removal
The code moves current to last node but does not track previous node.
Step 2: Check pointer update
Setting current = None only changes local variable, does not update previous node's next pointer to None, so last node remains linked.
Final Answer:
It does not update the previous node's next pointer -> Option B
Quick Check:
Must update previous.next to None to remove last node [OK]
Hint: Always update previous node's next to None when popping last node [OK]
Common Mistakes:
Not handling empty list
Not tracking previous node
Setting local variable to None instead of pointer
5. Given a linked list with nodes 10 -> 20 -> 30 -> 40 -> null, write the sequence of node values after two consecutive pop operations using a correct pop method that removes the last node each time.
hard
A. 10 -> 30 -> null
B. 10 -> 20 -> 30 -> null
C. 20 -> 30 -> 40 -> null
D. 10 -> 20 -> null
Solution
Step 1: First pop removes last node 40
List changes from 10 -> 20 -> 30 -> 40 -> null to 10 -> 20 -> 30 -> null.
Step 2: Second pop removes new last node 30
List changes from 10 -> 20 -> 30 -> null to 10 -> 20 -> null.
Final Answer:
10 -> 20 -> null -> Option D
Quick Check:
Two pops remove last two nodes [OK]
Hint: Each pop removes last node, shorten list stepwise [OK]
Common Mistakes:
Removing nodes from start instead of end
Not updating list after first pop
Confusing node values after pops
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.