Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में एकल परिपत्र लिंक्ड सूची में न्यूनतम और अधिकतम तत्व ढूंढना



यहां हम देखेंगे कि एकल परिपत्र लिंक्ड रैखिक सूची से न्यूनतम और अधिकतम मान कैसे प्राप्त करें। मूल अवधारणा बहुत सरल है। अंतिम नोड का अगला भाग पहले नोड की ओर इशारा करेगा, पहला नोड भी स्टार्ट पॉइंटर का उपयोग करके इंगित किया जाएगा। जब हम सूची में कुछ तत्व डालते हैं, तो डालने के बाद नवीनतम डाले गए नोड का अगला भाग स्टार्ट नोड के पते के साथ अपडेट किया जाएगा।

प्रारंभ में न्यूनतम को पॉजिटिव इन्फिनिटी और अधिकतम को नेगेटिव इन्फिनिटी असाइन किया जाता है। अब सूची को बाएं से दाएं ट्रैवर्स करें। यदि वर्तमान तत्व न्यूनतम तत्व से कम है, तो न्यूनतम अपडेट करें, यदि वर्तमान तत्व अधिकतम तत्व से बड़ा है, तो अधिकतम अपडेट करें। इस प्रकार हम न्यूनतम और अधिकतम मान प्राप्त कर सकते हैं।

उदाहरण

#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

  1. C++ में दिए गए नंबर k से विभाज्य लिंक्ड लिस्ट के अधिकतम और न्यूनतम एलिमेंट C++ में दिए गए नंबर k से विभाज्य लिंक्ड लिस्ट के अधिकतम और न्यूनतम एलिमेंट

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें एलिमेंट्स पॉइंटर्स के माध्यम से जुड़े होते हैं। लिंक्ड लिस्ट के प्रत्येक एलिमेंट या नोड में एक डेटा भाग और लिंक होता है, या हम कह सकते हैं कि क्रम में अगले एलिमेंट का पॉइंटर होता है। एलिमेंट्स मेमोरी में नॉन-कंटीगुअस स्थान ले सकते हैं। हमें एक सिंगली लिं

  1. - C++ में लिंक्ड लिस्ट में न्यूनतम आवृत्ति वाले तत्वों की गिनती

    समस्या विवरण एक लिंक्ड लिस्ट दी गई है जिसमें डुप्लिकेट तत्व हो सकते हैं। हमें उन तत्वों की गिनती करनी है जिनकी आवृत्ति (frequency) न्यूनतम है। उदाहरण इनपुट: 1→1→2→2→2→3→3 आउटपुट: 2 व्याख्या: न्यूनतम आवृत्ति 2 है (तत्व 1 और 3 की), इसलिए गिनती 2 है। इनपुट: 1→2→3→2→4→2→5 आउटपुट: 4 व्याख्या: न्यूनतम

  1. C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स की गिनती करें C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स की गिनती करें

    हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की संख्या की गणना करना है। सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक प्रकार है जिसमें पहला तत्व अंतिम तत्व की ओर इंगित करता है और अंतिम तत्व पहले तत्व की ओर इंगित करता है। सिंगली लिंक्ड लिस्ट और डबली लिं