A linear linked list is a chain of nodes where each node points to the next node, and the last node points to null, indicating the end of the list.
Click to reveal answer
beginner
What is a circular linked list?
A circular linked list is a chain of nodes where the last node points back to the first node, forming a circle with no null end.
Click to reveal answer
beginner
Key difference between linear and circular linked lists?
In a linear linked list, the last node points to null, ending the list. In a circular linked list, the last node points back to the first node, creating a loop.
Click to reveal answer
intermediate
How does traversal differ between linear and circular linked lists?
In a linear linked list, traversal stops when a node points to null. In a circular linked list, traversal can continue indefinitely unless stopped by a condition because there is no null.
Click to reveal answer
intermediate
Why might you choose a circular linked list over a linear linked list?
Circular linked lists are useful when you want to cycle through elements repeatedly without restarting, like in round-robin scheduling or buffering.
Click to reveal answer
In a linear linked list, what does the last node point to?
Aitself
Bthe first node
Cnull
Drandom node
✗ Incorrect
The last node in a linear linked list points to null, marking the end of the list.
What is the main characteristic of a circular linked list?
ALast node points to the first node
BNodes have two pointers
CNodes are sorted
DLast node points to null
✗ Incorrect
In a circular linked list, the last node points back to the first node, forming a circle.
Which linked list type can cause infinite traversal if not handled properly?
ADoubly linked list
BCircular linked list
CLinear linked list
DArray list
✗ Incorrect
Circular linked lists have no null end, so traversal can loop infinitely if no stopping condition is used.
Which linked list is better for implementing a round-robin scheduler?
AQueue
BLinear linked list
CStack
DCircular linked list
✗ Incorrect
Circular linked lists allow cycling through elements repeatedly, ideal for round-robin scheduling.
In a linear linked list, how do you know when to stop traversing?
AWhen the next pointer is null
BWhen you reach the first node
CAfter a fixed number of steps
DWhen the node points to itself
✗ Incorrect
Traversal stops when the next pointer is null, indicating the end of the linear linked list.
Explain the key difference between a circular linked list and a linear linked list.
Think about where the last node points in each list.
You got /4 concepts.
Describe a real-life scenario where a circular linked list is more useful than a linear linked list.
Consider situations where you want to keep going back to the start.
You got /4 concepts.
Practice
(1/5)
1. What is the main difference between a circular linked list and a linear linked list?
easy
A. In a circular linked list, the last node points back to the first node, forming a circle.
B. In a linear linked list, the last node points back to the first node, forming a circle.
C. A circular linked list has no nodes.
D. A linear linked list always has only one node.
Solution
Step 1: Understand node connections in linear linked list
In a linear linked list, nodes are connected one after another, and the last node points to null, ending the list.
Step 2: Understand node connections in circular linked list
In a circular linked list, the last node points back to the first node, creating a loop or circle.
Final Answer:
In a circular linked list, the last node points back to the first node, forming a circle. -> Option A
Quick Check:
Circular list loops back = In a circular linked list, the last node points back to the first node, forming a circle. [OK]
Hint: Circular loops back to start; linear ends with null [OK]
Common Mistakes:
Confusing which list loops back
Thinking linear list forms a circle
Assuming circular list has no end node
2. Which of the following is the correct way to check if a single-node linked list is circular in TypeScript?
easy
A. if (head.next === 0) { /* linear list */ }
B. if (head.next === null) { /* linear list */ }
C. if (head.next === undefined) { /* circular list */ }
D. if (head.next === head) { /* circular list */ }
Solution
Step 1: Understand node pointer in circular list
In a circular linked list, the next pointer of the last node points back to the head node itself.
Step 2: Check the condition for circular list
If head.next equals head, it means the list loops back to the start, confirming circularity.
Final Answer:
if (head.next === head) { /* circular list */ } -> Option D
Quick Check:
Next points to head means circular [OK]
Hint: Check if next points to head for circular list [OK]
Common Mistakes:
Checking for null instead of head
Using undefined instead of null
Confusing zero with null pointer
3. Consider this TypeScript code for a circular linked list:
class Node {
value: number;
next: Node | null;
constructor(value: number) {
this.value = value;
this.next = null;
}
}
const head = new Node(1);
const second = new Node(2);
const third = new Node(3);
head.next = second;
second.next = third;
third.next = head;
let current = head;
let count = 0;
while (count < 5) {
console.log(current.value);
current = current.next!;
count++;
}
What will be the output printed?
medium
A. 1 2 3 null null
B. 1 2 3 1 2
C. 1 2 3 4 5
D. 1 2 3 3 3
Solution
Step 1: Understand the circular linked list structure
The last node (third) points back to head, so the list loops: 1 -> 2 -> 3 -> 1 -> ...
Step 2: Trace the loop for 5 iterations
Starting at head (1), the values printed are: 1, 2, 3, then loops back to 1, then 2.
Final Answer:
1 2 3 1 2 -> Option B
Quick Check:
Circular list repeats nodes in order [OK]
Hint: Circular list repeats nodes; count controls output length [OK]
Common Mistakes:
Assuming list ends after 3 nodes
Printing null after last node
Confusing node values after loop
4. The following TypeScript code attempts to detect if a linked list is circular but has a bug:
function isCircular(head: Node | null): boolean {
let current = head;
while (current !== null) {
if (current.next === head) {
return true;
}
current = current.next!;
}
return false;
}
What is the bug in this code?
medium
A. It incorrectly returns true for linear lists.
B. It does not handle empty lists (head = null).
C. It may enter an infinite loop if the list is circular but not pointing directly to head.
D. It uses 'current.next!' which causes a syntax error.
Solution
Step 1: Analyze the loop condition and pointer movement
The loop moves current to current.next until current is null or current.next equals head.
Step 2: Identify the problem with circular lists
If the list is circular but the loop does not point directly back to head (e.g., cycle in middle), the loop never ends, causing infinite loop.
Final Answer:
It may enter an infinite loop if the list is circular but not pointing directly to head. -> Option C
Quick Check:
Loop may never end if cycle not at head [OK]
Hint: Check for cycles anywhere, not just pointing to head [OK]
Common Mistakes:
Assuming only last node points to head
Ignoring infinite loop possibility
Confusing syntax error with logic error
5. You want to convert a linear linked list into a circular linked list in TypeScript. Given the code below, which line correctly completes the conversion?
class Node {
value: number;
next: Node | null;
constructor(value: number) {
this.value = value;
this.next = null;
}
}
const head = new Node(10);
const second = new Node(20);
const third = new Node(30);
head.next = second;
second.next = third;
third.next = null; // currently linear list
// Which line below makes the list circular?
// A: third.next = null;
// B: second.next = head;
// C: head.next = third;
// D: third.next = head;
medium
A. third.next = head;
B. second.next = head;
C. head.next = third;
D. third.next = null;
Solution
Step 1: Understand the current list structure
The list is linear: head -> second -> third -> null.
Step 2: Make the last node point to head to form a circle
Setting third.next = head connects the last node back to the first, making the list circular.
Final Answer:
third.next = head; -> Option A
Quick Check:
Last node points to head for circular list [OK]
Hint: Last node's next must point to head for circular list [OK]
Common Mistakes:
Setting next to null keeps list linear
Pointing head.next to third breaks order
Pointing second.next to head creates wrong cycle
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.