यहां हम देखेंगे कि एक सिंगल सर्कुलर लिंक्ड लीनियर लिस्ट से न्यूनतम और अधिकतम मूल्य कैसे प्राप्त करें। मूल अवधारणा बहुत सरल है। अंतिम नोड का अगला भाग पहले नोड को इंगित किया जाएगा, पहला नोड भी प्रारंभ सूचक का उपयोग करके इंगित किया जाएगा। जब हम सूची में कुछ तत्व सम्मिलित करते हैं, तो नए सम्मिलित नोड के अगले भाग को सम्मिलित करने के बाद प्रारंभ नोड के पते के साथ अद्यतन किया जाएगा।
प्रारंभ में न्यूनतम को सकारात्मक अनंत के साथ सौंपा गया है, और अधिकतम को नकारात्मक अनंत के साथ सौंपा गया है। अब सूची को बाएँ से दाएँ पार करें। यदि वर्तमान तत्व न्यूनतम तत्व से कम है, तो न्यूनतम अद्यतन करें, यदि वर्तमान तत्व अधिकतम तत्व से बड़ा है, तो अधिकतम अद्यतन करें। इस प्रकार हम न्यूनतम और अधिकतम मान प्राप्त कर सकते हैं।
उदाहरण
#include<iostream> using namespace std; class Node{ public: int data; Node *next; }; Node* getNode(int key){ Node *newNode = new Node(); newNode->data = key; newNode->next = NULL; return newNode; } void insert(Node **start, int data){ Node *current = *start; Node *newNode = getNode(data); if(*start == NULL){ newNode->next = newNode; *start = newNode; return; } while (current->next != *start) { current = current->next; } newNode->next = *start; current->next = newNode; } void displayList(Node *start){ Node* current = start; if (start == NULL) { cout << "Display List is empty"; return; } else { do { cout << current->data << " "; current = current->next; } while (current != start); } cout << endl; } void getMinMax(Node **start){ if(*start == NULL){ return; } Node* current; current = *start; int min = INT_MAX, max = INT_MIN; while (current->next != *start) { if (current->data < min) { min = current->data; } if (current->data > max) { max = current->data; } current = current->next; } cout << "Minimum: " << min << ", Maximum: " << max; } int main() { int data[] = {99, 11, 22, 10, 44, 55, 66}; int n = sizeof(data)/sizeof(data[0]); Node *start = NULL; for(int i = 0; i<n; i++){ insert(&start, data[i]); } displayList(start); getMinMax(&start); }
आउटपुट
99 11 22 10 44 55 66 Minimum: 10, Maximum: 99