What if you could instantly know the size of a chain without counting each link by hand?
Why Get Length of Linked List in DSA C++?
Imagine you have a long chain of paper clips linked together, and you want to know how many clips are in the chain. Counting each clip one by one by hand can be tiring and easy to lose track.
Manually counting each item in a chain or list is slow and prone to mistakes, especially if the chain is very long or changes often. You might forget where you left off or count the same clip twice.
Using a simple method to automatically count the number of items in a linked list saves time and avoids errors. The method walks through the list once, keeping track of how many items it has seen.
int count = 0; Node* current = head; while (current != nullptr) { count++; current = current->next; }
int getLength(Node* head) {
int length = 0;
Node* current = head;
while (current != nullptr) {
length++;
current = current->next;
}
return length;
}This lets you quickly find out how many items are in a linked list, enabling better decisions and operations on the data.
When managing a playlist of songs linked together, knowing the total number of songs helps you display the playlist length or decide when to add more songs.
Manually counting linked list items is slow and error-prone.
Automated length calculation walks through the list once, counting items.
This method helps manage and use linked lists efficiently.
Practice
getLength do when given the head of a linked list?Solution
Step 1: Understand the function purpose
The functiongetLengthcounts nodes starting from the head until the end.Step 2: Identify the output
It returns the total count of nodes, which is the length of the linked list.Final Answer:
Returns the number of nodes in the linked list -> Option CQuick Check:
Counting nodes = length [OK]
- Confusing length with node value
- Trying to delete nodes instead of counting
- Returning the last node instead of count
Solution
Step 1: Understand pointer initialization
In C++, a pointer to a node is declared asNode*and can be initialized toNULLornullptr.Step 2: Check each option
Node* head = NULL; usesNode* head = NULL;which is correct pointer initialization syntax.Final Answer:
Node* head = NULL; -> Option AQuick Check:
Pointer declaration uses * and NULL [OK]
- Declaring pointer without *
- Assigning NULL to non-pointer variable
- Using 0 instead of NULL (less clear)
struct Node {
int data;
Node* next;
};
int getLength(Node* head) {
int count = 0;
while (head != NULL) {
count++;
head = head->next;
}
return count;
}
int main() {
Node n3 = {30, NULL};
Node n2 = {20, &n3};
Node n1 = {10, &n2};
int length = getLength(&n1);
std::cout << length;
return 0;
}Solution
Step 1: Trace the linked list nodes
The list has nodes n1 -> n2 -> n3 -> NULL, so total 3 nodes.Step 2: Count nodes in getLength
The function counts each node until NULL, so count becomes 3.Final Answer:
3 -> Option AQuick Check:
3 nodes counted = 3 [OK]
- Counting only first node
- Off-by-one error in loop
- Confusing data values with count
int getLength(Node* head) {
int count = 0;
while (head->next != NULL) {
count++;
head = head->next;
}
return count;
}Solution
Step 1: Analyze the loop condition
The loop runs whilehead->next != NULL, so it stops before the last node.Step 2: Check counting logic
Since last node is not counted, the returned count is one less than actual length.Final Answer:
It misses counting the last node -> Option BQuick Check:
Loop condition excludes last node [OK]
- Using head->next in loop condition
- Not counting last node
- Confusing node data with count
getLength function to return the length only if all node values are positive? If any node has zero or negative value, return -1.Solution
Step 1: Traverse each node checking value
While moving through the list, check if node's data is <= 0; if yes, return -1 immediately.Step 2: Count nodes if all values positive
If all nodes have positive values, count them and return the count as length.Final Answer:
Traverse nodes, if value <= 0 return -1, else count nodes and return count -> Option DQuick Check:
Check values during count, return -1 if any non-positive [OK]
- Ignoring node values during count
- Checking only first node value
- Returning length even if negative values exist
Ready to prove it?
Pass the test and this pattern moves unknown
