Bird
0
0
DSA Cprogramming~20 mins

Traversal Forward and Backward in DSA C - Practice Problems & Challenges

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

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

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

int main() {
    Node* n1 = malloc(sizeof(Node));
    Node* n2 = malloc(sizeof(Node));
    Node* n3 = malloc(sizeof(Node));

    n1->data = 10; n1->prev = NULL; n1->next = n2;
    n2->data = 20; n2->prev = n1; n2->next = n3;
    n3->data = 30; n3->prev = n2; n3->next = NULL;

    printForward(n1);
    return 0;
}
A10 -> 20 -> 30 -> NULL
B30 -> 20 -> 10 -> NULL
C10 20 30 NULL
DNULL -> 10 -> 20 -> 30
Attempts:
2 left
💡 Hint
Follow the next pointers starting from the head node.
Predict Output
intermediate
2:00remaining
Output of Backward Traversal in Doubly Linked List
What is the printed output of the following C code that traverses a doubly linked list backward?
DSA C
#include <stdio.h>
#include <stdlib.h>

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

void printBackward(Node* tail) {
    Node* current = tail;
    while (current != NULL) {
        printf("%d -> ", current->data);
        current = current->prev;
    }
    printf("NULL\n");
}

int main() {
    Node* n1 = malloc(sizeof(Node));
    Node* n2 = malloc(sizeof(Node));
    Node* n3 = malloc(sizeof(Node));

    n1->data = 10; n1->prev = NULL; n1->next = n2;
    n2->data = 20; n2->prev = n1; n2->next = n3;
    n3->data = 30; n3->prev = n2; n3->next = NULL;

    printBackward(n3);
    return 0;
}
A30 -> 20 -> 10 -> NULL
B10 -> 20 -> 30 -> NULL
CNULL -> 30 -> 20 -> 10
D30 20 10 NULL
Attempts:
2 left
💡 Hint
Follow the prev pointers starting from the tail node.
🧠 Conceptual
advanced
1:00remaining
Understanding Traversal Pointers in Doubly Linked List
In a doubly linked list, which pointer is used to move backward during traversal?
Ahead pointer
Bnext pointer
Cprev pointer
Dtail pointer
Attempts:
2 left
💡 Hint
Think about which pointer links to the previous node.
🔧 Debug
advanced
2:00remaining
Identify the Bug in Backward Traversal Code
What error will occur when running this backward traversal code snippet?
DSA C
#include <stdio.h>
#include <stdlib.h>

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

void printBackward(Node* tail) {
    Node* current = tail;
    while (current != NULL) {
        printf("%d -> ", current->next->data);
        current = current->prev;
    }
    printf("NULL\n");
}
ACompilation error due to missing semicolon
BSegmentation fault (accessing NULL pointer)
CNo error, prints backward list correctly
DInfinite loop
Attempts:
2 left
💡 Hint
Check what happens when current->next is NULL.
🚀 Application
expert
3:00remaining
Result of Mixed Forward and Backward Traversal
Given a doubly linked list with nodes 1 <-> 2 <-> 3 <-> 4, what is the output after this code runs? 1. Traverse forward from head and print nodes. 2. Then traverse backward from tail and print nodes. Assume print format: "data -> " and ends with "NULL".
DSA C
#include <stdio.h>
#include <stdlib.h>

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

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

void printBackward(Node* tail) {
    Node* current = tail;
    while (current != NULL) {
        printf("%d -> ", current->data);
        current = current->prev;
    }
    printf("NULL\n");
}

int main() {
    Node* n1 = malloc(sizeof(Node));
    Node* n2 = malloc(sizeof(Node));
    Node* n3 = malloc(sizeof(Node));
    Node* n4 = malloc(sizeof(Node));

    n1->data = 1; n1->prev = NULL; n1->next = n2;
    n2->data = 2; n2->prev = n1; n2->next = n3;
    n3->data = 3; n3->prev = n2; n3->next = n4;
    n4->data = 4; n4->prev = n3; n4->next = NULL;

    printForward(n1);
    printBackward(n4);
    return 0;
}
A
NULL -&gt; 1 -&gt; 2 -&gt; 3 -&gt; 4
NULL -&gt; 4 -&gt; 3 -&gt; 2 -&gt; 1
B
4 -&gt; 3 -&gt; 2 -&gt; 1 -&gt; NULL
1 -&gt; 2 -&gt; 3 -&gt; 4 -&gt; NULL
C
1 2 3 4 NULL
4 3 2 1 NULL
D
1 -&gt; 2 -&gt; 3 -&gt; 4 -&gt; NULL
4 -&gt; 3 -&gt; 2 -&gt; 1 -&gt; NULL
Attempts:
2 left
💡 Hint
First print forward from head, then backward from tail.