Bird
0
0
DSA Cprogramming~20 mins

Traversal and Printing a Linked List in DSA C - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Linked List Traversal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Traversing a Linked List
What is the printed output of the following C code that traverses and prints a singly linked list?
DSA C
#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node* next;
};

void printList(struct Node* head) {
    struct Node* current = head;
    while (current != NULL) {
        printf("%d -> ", current->data);
        current = current->next;
    }
    printf("NULL\n");
}

int main() {
    struct Node* head = malloc(sizeof(struct Node));
    struct Node* second = malloc(sizeof(struct Node));
    struct Node* third = malloc(sizeof(struct Node));

    head->data = 10;
    head->next = second;

    second->data = 20;
    second->next = third;

    third->data = 30;
    third->next = NULL;

    printList(head);
    return 0;
}
ANULL
B10 -> 20 -> NULL
C20 -> 30 -> NULL
D10 -> 20 -> 30 -> NULL
Attempts:
2 left
💡 Hint
Follow the next pointers from head until NULL is reached.
Predict Output
intermediate
2:00remaining
Output After Modifying Linked List Pointer
What will be the output of the following code that modifies the linked list before printing?
DSA C
#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node* next;
};

void printList(struct Node* head) {
    struct Node* current = head;
    while (current != NULL) {
        printf("%d -> ", current->data);
        current = current->next;
    }
    printf("NULL\n");
}

int main() {
    struct Node* head = malloc(sizeof(struct Node));
    struct Node* second = malloc(sizeof(struct Node));
    struct Node* third = malloc(sizeof(struct Node));

    head->data = 1;
    head->next = second;

    second->data = 2;
    second->next = third;

    third->data = 3;
    third->next = NULL;

    // Modify the list
    second->next = NULL;

    printList(head);
    return 0;
}
A1 -> 2 -> 3 -> NULL
B1 -> 2 -> NULL
C2 -> 3 -> NULL
D1 -> 3 -> NULL
Attempts:
2 left
💡 Hint
Check how the next pointer of the second node is changed.
🔧 Debug
advanced
2:00remaining
Identify the Error in Linked List Traversal
What error will occur when running this code that attempts to print a linked list?
DSA C
#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node* next;
};

void printList(struct Node* head) {
    struct Node* current = head;
    while (current->next != NULL) {
        printf("%d -> ", current->data);
        current = current->next;
    }
    printf("%d -> NULL\n", current->data);
}

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

    printList(head);
    return 0;
}
ANo error, output: 5 -> NULL
BSegmentation fault (accessing NULL pointer)
CInfinite loop
DCompilation error
Attempts:
2 left
💡 Hint
Check the loop condition and how it handles single-node list.
Predict Output
advanced
2:00remaining
Output of Recursive Linked List Print
What is the output of this recursive function printing a linked list?
DSA C
#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node* next;
};

void printListRecursive(struct Node* node) {
    if (node == NULL) {
        printf("NULL\n");
        return;
    }
    printf("%d -> ", node->data);
    printListRecursive(node->next);
}

int main() {
    struct Node* head = malloc(sizeof(struct Node));
    struct Node* second = malloc(sizeof(struct Node));

    head->data = 7;
    head->next = second;

    second->data = 14;
    second->next = NULL;

    printListRecursive(head);
    return 0;
}
A14 -> 7 -> NULL
B7 -> 14 ->
C7 -> 14 -> NULL
DNULL
Attempts:
2 left
💡 Hint
Think about how recursion prints nodes in order.
🧠 Conceptual
expert
2:00remaining
Number of Nodes After Partial Traversal
Given a linked list with 5 nodes, if you traverse the list with the following code snippet, how many nodes will be counted?
DSA C
int countNodes(struct Node* head) {
    int count = 0;
    struct Node* current = head;
    while (current != NULL && count < 3) {
        count++;
        current = current->next;
    }
    return count;
}
A3
B5
C0
D4
Attempts:
2 left
💡 Hint
The loop stops when count reaches 3 or list ends.