समस्या विवरण
जांचें कि दिया गया लिंक्ड लिस्ट सर्कुलर है या नहीं।
एल्गोरिदम
- हेड नोड को स्टोर करें
- लिस्ट ट्रैवर्स करें
- यदि NULL मिले → सर्कुलर नहीं
- यदि हेड नोड पर वापस आ जाएं → सर्कुलर है
उदाहरण कोड
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
};
Node* getNode(int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = NULL;
return newNode;
}
bool isCircularList(Node* start) {
if (start == NULL) return true;
Node* node = start->next;
while (node != NULL && node != start)
node = node->next;
return (node == start);
}
int main() {
Node* start = getNode(10);
start->next = getNode(20);
start->next->next = getNode(30);
start->next->next->next = getNode(40);
start->next->next->next->next = getNode(50);
start->next->next->next->next->next = start; // सर्कुलर बनाएं
if (isCircularList(start))
cout << "The list is circular list";
else
cout << "The list is not circular list";
return 0;
}
आउटपुट
The list is circular list