Bird
0
0
DSA Cprogramming~20 mins

Insert at Beginning Head Insert in DSA C - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Head Insert Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output after inserting nodes at the beginning?
Consider a singly linked list initially empty. We insert nodes with values 10, 20, and 30 at the beginning one by one. What is the final state of the linked list?
DSA C
struct Node {
    int data;
    struct Node* next;
};

struct Node* head = NULL;

void insertAtBeginning(int val) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = val;
    newNode->next = head;
    head = newNode;
}

int main() {
    insertAtBeginning(10);
    insertAtBeginning(20);
    insertAtBeginning(30);
    struct Node* temp = head;
    while(temp != NULL) {
        printf("%d -> ", temp->data);
        temp = temp->next;
    }
    printf("NULL\n");
    return 0;
}
A20 -> 30 -> 10 -> NULL
B10 -> 20 -> 30 -> NULL
CNULL
D30 -> 20 -> 10 -> NULL
Attempts:
2 left
💡 Hint
Remember, inserting at the beginning means the newest node becomes the head.
Predict Output
intermediate
2:00remaining
What happens if we insert a node with value 0 at the beginning of a list with 5 -> 15 -> NULL?
Given a linked list with nodes 5 -> 15 -> NULL, we insert a node with value 0 at the beginning. What is the new list?
DSA C
struct Node {
    int data;
    struct Node* next;
};

struct Node* head = NULL;

void insertAtBeginning(int val) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = val;
    newNode->next = head;
    head = newNode;
}

int main() {
    struct Node* first = (struct Node*)malloc(sizeof(struct Node));
    struct Node* second = (struct Node*)malloc(sizeof(struct Node));
    first->data = 5;
    first->next = second;
    second->data = 15;
    second->next = NULL;
    head = first;

    insertAtBeginning(0);

    struct Node* temp = head;
    while(temp != NULL) {
        printf("%d -> ", temp->data);
        temp = temp->next;
    }
    printf("NULL\n");
    return 0;
}
A0 -> 5 -> 15 -> NULL
B5 -> 15 -> 0 -> NULL
C15 -> 5 -> 0 -> NULL
D5 -> 0 -> 15 -> NULL
Attempts:
2 left
💡 Hint
Inserting at the beginning changes the head to the new node.
🔧 Debug
advanced
2:00remaining
Why does this head insert code cause a segmentation fault?
Identify the bug in the following code that causes a segmentation fault when inserting at the beginning of a linked list.
DSA C
struct Node {
    int data;
    struct Node* next;
};

struct Node* head = NULL;

void insertAtBeginning(int val) {
    struct Node* newNode;
    newNode->data = val;
    newNode->next = head;
    head = newNode;
}

int main() {
    insertAtBeginning(10);
    return 0;
}
Ahead is not initialized to NULL
Bnext pointer is not set to NULL
CnewNode is not allocated memory before use, causing undefined behavior
Ddata field is assigned after setting next pointer
Attempts:
2 left
💡 Hint
Check if newNode points to valid memory before accessing its fields.
Predict Output
advanced
2:00remaining
What is the output after multiple head insertions with this code?
Given the code below, what is printed after inserting 1, 2, 3 at the beginning in that order?
DSA C
struct Node {
    int data;
    struct Node* next;
};

struct Node* head = NULL;

void insertAtBeginning(int val) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = val;
    newNode->next = head;
    head = newNode;
}

int main() {
    insertAtBeginning(1);
    insertAtBeginning(2);
    insertAtBeginning(3);

    struct Node* temp = head;
    while(temp != NULL) {
        printf("%d ", temp->data);
        temp = temp->next;
    }
    return 0;
}
A1 2 3
B3 2 1
C1 3 2
D2 3 1
Attempts:
2 left
💡 Hint
The last inserted node becomes the head.
🧠 Conceptual
expert
1:00remaining
What is the time complexity of inserting a node at the beginning of a singly linked list?
Choose the correct time complexity for inserting a new node at the beginning (head) of a singly linked list.
AO(1) - Constant time
BO(n) - Linear time
CO(log n) - Logarithmic time
DO(n^2) - Quadratic time
Attempts:
1 left
💡 Hint
Inserting at the head does not require traversal of the list.