📖 Scenario: Imagine you have a line of people waiting to buy tickets. Sometimes the first person in line leaves. We want to update the line to show who is now first.
🎯 Goal: You will create a simple linked list of numbers, then remove the first number from the list, and finally show the updated list.
📋 What You'll Learn
Create a linked list with nodes containing values 10, 20, and 30 in that order
Create a variable called head pointing to the first node
Write code to delete the first node from the linked list
Print the linked list values after deletion in the format: 20 -> 30 -> null
💡 Why This Matters
🌍 Real World
Linked lists are used in many programs to manage lists of items where items can be added or removed easily, like managing tasks or undo history.
💼 Career
Understanding linked lists and how to modify them is a key skill for software developers, especially when working with low-level data or optimizing memory usage.
Progress0 / 4 steps
1
Create the linked list nodes
Create three nodes named node1, node2, and node3 with values 10, 20, and 30 respectively. Link them so that node1 points to node2 and node2 points to node3. Set node3's next to nil.
DSA Go
Hint
Remember to use &Node{value: X} to create nodes and set the next field to link nodes.
2
Set the head pointer
Create a variable called head and set it to point to node1.
DSA Go
Hint
Use head := node1 to point to the first node.
3
Delete the first node
Update the head variable to point to the second node in the list, effectively deleting the first node.
DSA Go
Hint
Set head = head.next to remove the first node from the list.
4
Print the linked list
Write a loop to print the values of the linked list starting from head. Print each value followed by -> and end with null.
DSA Go
Hint
Use a for loop to go through each node starting from head and print the value followed by ->. After the loop, print null.
Practice
(1/5)
1. What happens when you delete the first node in a singly linked list?
easy
A. The head pointer moves to the second node
B. The last node is deleted
C. The list becomes empty regardless of nodes
D. The middle node is deleted
Solution
Step 1: Understand the head pointer role
The head pointer points to the first node in the list.
Step 2: Effect of deleting the first node
Deleting the first node means moving the head pointer to the next node, which becomes the new first node.
Final Answer:
The head pointer moves to the second node -> Option A
Quick Check:
Deleting first node updates head = next node [OK]
Hint: Deleting first node means head points to next node [OK]
Common Mistakes:
Thinking last node is deleted
Assuming list becomes empty always
Deleting middle node by mistake
2. Which of the following Go code snippets correctly deletes the first node of a singly linked list with head pointer head?
easy
A. head.next = nil
B. head.next = head
C. head = nil.next
D. head = head.next
Solution
Step 1: Understand pointer update to delete first node
To delete the first node, head must point to the second node, which is head.next.
Step 2: Check each option for correctness
head = head.next correctly assigns head = head.next. Others either assign incorrectly or cause errors.
Final Answer:
head = head.next -> Option D
Quick Check:
head = head.next deletes first node [OK]
Hint: Assign head to head.next to delete first node [OK]
Common Mistakes:
Assigning head.next to head (wrong direction)
Using nil.next which causes error
Setting head.next to nil deletes wrong node
3. Given the following Go code for a singly linked list, what will be printed after deleting the first node?
package main
import "fmt"
type Node struct {
value int
next *Node
}
func main() {
head := &Node{value: 1}
head.next = &Node{value: 2}
head.next.next = &Node{value: 3}
// Delete first node
head = head.next
// Print list
current := head
for current != nil {
fmt.Print(current.value, " -> ")
current = current.next
}
fmt.Print("null")
}
medium
A. 2 -> 3 -> null
B. 1 -> 2 -> 3 -> null
C. 3 -> null
D. null
Solution
Step 1: Initial list nodes and values
The list starts as 1 -> 2 -> 3 -> null.
Step 2: Deleting first node by head = head.next
Head moves from node with value 1 to node with value 2, so list becomes 2 -> 3 -> null.
Final Answer:
2 -> 3 -> null -> Option A
Quick Check:
After deletion, list starts at second node [OK]
Hint: After deletion, list starts from second node [OK]
Common Mistakes:
Printing original list without deletion
Assuming first node still prints
Confusing null with empty list
4. The following Go code attempts to delete the first node of a singly linked list but causes a runtime error. What is the error and how to fix it?
package main
type Node struct {
value int
next *Node
}
func main() {
var head *Node = nil
// Delete first node
head = head.next
}
medium
A. Compile error: cannot assign head.next to head
B. Runtime panic: nil pointer dereference; fix by checking if head is nil before deletion
C. No error; code works fine
D. Syntax error: missing import; fix by adding fmt package
Solution
Step 1: Identify cause of runtime panic
head is nil, so accessing head.next causes nil pointer dereference panic.
Step 2: Fix by checking if head is nil before deleting
Check if head != nil before assigning head = head.next to avoid panic.
Final Answer:
Runtime panic: nil pointer dereference; fix by checking if head is nil before deletion -> Option B
Quick Check:
Nil check prevents runtime panic [OK]
Hint: Always check head != nil before deleting first node [OK]
Common Mistakes:
Ignoring nil check causing panic
Assuming head is never nil
Confusing syntax and runtime errors
5. You have a singly linked list with nodes: 10 -> 20 -> 30 -> 40 -> null. Write a Go function to delete the first node and return the new head. What will be the list after deletion?
func deleteFirstNode(head *Node) *Node {
if head == nil {
return nil
}
head = head.next
return head
}
hard
A. 30 -> 40 -> null
B. 10 -> 20 -> 30 -> 40 -> null
C. 20 -> 30 -> 40 -> null
D. null
Solution
Step 1: Understand function logic
If head is nil, return nil. Otherwise, move head to head.next and return it.
Step 2: Apply function to list 10 -> 20 -> 30 -> 40 -> null
Deleting first node (10) moves head to node with value 20, so list becomes 20 -> 30 -> 40 -> null.
Final Answer:
20 -> 30 -> 40 -> null -> Option C
Quick Check:
Function returns list starting from second node [OK]
Hint: Return head.next to delete first node and update list [OK]
Common Mistakes:
Returning original head without deletion
Not handling nil head case
Deleting wrong node by mistake
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.