Bird
Raised Fist0
DSA Goprogramming~10 mins

Insert at Beginning Head Insert in DSA Go - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a new node with the given value.

DSA Go
newNode := &Node{data: val, next: [1]
Drag options to blanks, or click blank then click option'
Anil
BnewNode
Chead
Dnext
Attempts:
3 left
💡 Hint
Common Mistakes
Setting next to newNode causes a cycle.
Setting next to nil breaks the list.
2fill in blank
medium

Complete the code to link the new node to the current head.

DSA Go
newNode.next = [1]
Drag options to blanks, or click blank then click option'
Atail
Bhead
Cnil
DnewNode
Attempts:
3 left
💡 Hint
Common Mistakes
Setting next to nil breaks the list.
Setting next to newNode causes a cycle.
3fill in blank
hard

Fix the error in updating the head pointer after insertion.

DSA Go
head = [1]
Drag options to blanks, or click blank then click option'
AnewNode
Bhead.next
CnewNode.next
Dnil
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning head to head.next skips the new node.
Assigning head to nil empties the list.
4fill in blank
hard

Fill both blanks to complete the function that inserts a new node at the beginning.

DSA Go
func insertAtBeginning(head *Node, val int) *Node {
    newNode := &Node{data: val, next: [1]
    head = [2]
    return head
}
Drag options to blanks, or click blank then click option'
Ahead
BnewNode
Cnil
Dhead.next
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping the order of assignments.
Setting newNode.next to nil breaks the list.
5fill in blank
hard

Fill all three blanks to complete the linked list insertion and print the list.

DSA Go
func insertAndPrint(head *Node, val int) *Node {
    newNode := &Node{data: val, next: [1]
    head = [2]
    current := head
    for current != [3] {
        fmt.Print(current.data, " -> ")
        current = current.next
    }
    fmt.Println("null")
    return head
}
Drag options to blanks, or click blank then click option'
Ahead
BnewNode
Cnil
Dhead.next
Attempts:
3 left
💡 Hint
Common Mistakes
Using head.next instead of nil to end traversal.
Not updating head to newNode.

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 end of the list
B. Searches for a node at the beginning
C. Deletes the first node of the list
D. Adds a new node at the start of the list, making it the new head

Solution

  1. Step 1: Understand the head pointer role

    The head pointer points to the first node in the list.
  2. Step 2: Insert at beginning changes head

    Inserting at beginning means creating a new node and making it the new head, linking it to the old head.
  3. Final Answer:

    Adds a new node at the start of the list, making it the new head -> Option D
  4. Quick Check:

    Insert at beginning = new head node [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 searches nodes
2. Which of the following Go code snippets correctly inserts a new node with value 10 at the beginning of a singly linked list?
easy
A. newNode := &Node{data: 10, next: head} head = newNode
B. head.next = &Node{data: 10} head = head.next
C. newNode := &Node{data: 10} head.next = newNode
D. head = &Node{data: 10} head.next = nil

Solution

  1. Step 1: Create new node pointing to current head

    newNode is created with data 10 and next pointing to current head.
  2. Step 2: Update head to new node

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

    newNode := &Node{data: 10, next: head}\nhead = newNode -> Option A
  4. Quick Check:

    New node points to old head, head updated [OK]
Hint: New node's next = old head; head = new node [OK]
Common Mistakes:
  • Not linking new node to old head
  • Changing head.next instead of head
  • Forgetting to update head pointer
3. What will be the output linked list after executing this Go code snippet?
package main
import "fmt"

type Node struct {
  data int
  next *Node
}

func main() {
  head := &Node{data: 5, next: nil}
  newNode := &Node{data: 3, next: head}
  head = newNode
  newNode2 := &Node{data: 1, next: head}
  head = newNode2

  // Print list
  current := head
  for current != nil {
    fmt.Print(current.data, " -> ")
    current = current.next
  }
  fmt.Print("null")
}
medium
A. 1 -> 3 -> 5 -> null
B. 5 -> 3 -> 1 -> null
C. 3 -> 1 -> 5 -> null
D. null

Solution

  1. Step 1: Insert 3 at beginning

    New node with 3 points to 5, head updated to 3.
  2. Step 2: Insert 1 at beginning

    New node with 1 points to 3, head updated to 1.
  3. Step 3: Print list from head

    Traverse from head: 1 -> 3 -> 5 -> null.
  4. Final Answer:

    1 -> 3 -> 5 -> null -> Option A
  5. Quick Check:

    Head insert order reversed list [OK]
Hint: New nodes become head, so list order reverses insert order [OK]
Common Mistakes:
  • Printing in insertion order instead of head order
  • Confusing next pointers
  • Not updating head after insert
4. Identify the error in this Go code that tries to insert a new node with value 7 at the beginning of a linked list:
type Node struct {
  data int
  next *Node
}

func insertAtBeginning(head *Node, val int) *Node {
  newNode := &Node{data: val}
  newNode.next = head.next
  head = newNode
  return head
}
medium
A. The function should not return head
B. head should not be reassigned inside the function
C. newNode.next should point to head, not head.next
D. newNode is not initialized correctly

Solution

  1. Step 1: Check newNode.next assignment

    It incorrectly points to head.next instead of head, skipping the current head node.
  2. Step 2: Correct pointer to head

    newNode.next must point to head to insert before it.
  3. Final Answer:

    newNode.next should point to head, not head.next -> Option C
  4. Quick Check:

    Link new node to head, not head.next [OK]
Hint: New node's next = head, not head.next [OK]
Common Mistakes:
  • Linking new node to head.next skipping head
  • Not updating head pointer correctly
  • Ignoring return value of updated head
5. Given a singly linked list with nodes containing integer values, write a Go function to insert multiple values at the beginning in order, so the final list reflects the insertion order. Which approach correctly achieves this?
hard
A. Insert each new value at the end one by one.
B. Insert each new value at the beginning but reverse the input slice before inserting.
C. Insert each new value at the beginning one by one.
D. Insert each new value at the end but reverse the input slice before inserting.

Solution

  1. Step 1: Understand insertion order at beginning

    Inserting at beginning reverses order because new nodes become head.
  2. Step 2: Reverse input slice before inserting

    Reversing input before inserting at beginning restores original order in final list.
  3. Final Answer:

    Insert each new value at the beginning but reverse the input slice before inserting. -> Option B
  4. Quick Check:

    Reverse input + head insert = original order [OK]
Hint: Reverse input before head inserts to keep order [OK]
Common Mistakes:
  • Inserting at beginning without reversing input
  • Inserting at end without reversing input
  • Confusing insert at beginning with insert at end
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