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

C++ में लिंक्ड लिस्ट में पीक एलिमेंट खोजें


इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो दी गई लिंक्ड लिस्ट में पीक एलिमेंट ढूंढता है।

पीक एलिमेंट वह तत्व है जो आसपास के तत्वों से बड़ा होता है। आइए प्रॉब्लम को हल करने के चरण देखें।

  • लिंक्ड लिस्ट के लिए एक स्ट्रक्चर नोड बनाएं।

  • डमी डेटा के साथ लिंक्ड लिस्ट बनाएं।

  • बेस केस की जांच करें जैसे कि लिंक्ड लिस्ट खाली है या लंबाई 1 की है।

  • पहले तत्व को पिछला नामक वेरिएबल में संग्रहीत करें।

  • लिंक्ड लिस्ट पर पुनरावृति करें।

    • जांचें कि क्या वर्तमान तत्व पिछले तत्व और अगले तत्व से बड़ा है।

    • यदि उपरोक्त शर्त पूरी होती है तो लौटाएं।

    • पिछले तत्व को अपडेट करें।

  • परिणाम प्रिंट करें

उदाहरण

आइए कोड देखें।

#include <bits/stdc++.h>
using namespace std;

struct Node {
    int data;
    struct Node* next;
};

void insertNewNode(struct Node** head_ref, int new_data) {
    struct Node* new_node = new Node;
    new_node->data = new_data;
    new_node->next = (*head_ref);
    *head_ref = new_node;
}

int findPeakElement(struct Node* head) {
    if (head == NULL) {
        return -1;
    }
    if (head->next == NULL) {
        return head->data;
    }
    int prev = head->data;
    Node *current_node;
    for (current_node = head->next; current_node->next != NULL; current_node = current_node->next) {
        if (current_node->data > current_node->next->data && current_node->data > prev) {
            return current_node->data;
        }
        prev = current_node->data;
    }
    if (current_node->data > prev) {
        return current_node->data;
    }
    return -1;
}

int main() {
    struct Node* head = NULL;
    insertNewNode(&head, 7);
    insertNewNode(&head, 4);
    insertNewNode(&head, 5);
    insertNewNode(&head, 2);
    insertNewNode(&head, 3);
    cout << findPeakElement(head) << endl;
    return 0;
}

आउटपुट

यदि आप उपरोक्त कोड को निष्पादित करते हैं, तो आपको निम्न परिणाम मिलेगा।

5

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।


  1. C++ में लिंक्ड लिस्ट में लूप की लंबाई ढूंढें C++ में लिंक्ड लिस्ट में लूप की लंबाई ढूंढें

    इस समस्या में, हमें एक लिंक्ड लिस्ट दी गई है जिसमें लूप हो सकते हैं। हमारा कार्य लिंक्ड लिस्ट में लूप की लंबाई ढूंढना है। समस्या विवरण: हमें लूप में नोड्स की संख्या गिननी है यदि इसमें लूप है अन्यथा -1 वापस करें। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: linked-list : आउटपुट: 8 समाधान दृष्ट

  1. C++ में एकल लिंक्ड सूची में सभी अभाज्य नोड्स का गुणनफल C++ में एकल लिंक्ड सूची में सभी अभाज्य नोड्स का गुणनफल

    n नोड्स दिए गए हैं और कार्य लिंक्ड सूची में सभी अभाज्य नोड्स का गुणनफल प्रिंट करना है। अभाज्य नोड्स वे हैं जिनके स्थान मान अभाज्य होंगे। इनपुट 10 20 30 40 50 आउटपुट 4,00,000 व्याख्या 10 सूचकांक मान 1 पर है जो गैर-अभाज्य है इसलिए इसे छोड़ दिया जाएगा। 20 पर जाएं जिसका सूचकांक मान 2 है जो एक अभाज्य

  1. C++ में डौबली लिंक्ड लिस्ट का आकार ढूंढना C++ में डौबली लिंक्ड लिस्ट का आकार ढूंढना

    इस समस्या में, हमें एक डौबली लिंक्ड लिस्ट दी गई है। हमारा कार्य C++ में डौबली लिंक्ड लिस्ट का आकार ढूंढने के लिए एक प्रोग्राम बनाना है। डौबली लिंक्ड लिस्ट एक विशेष प्रकार की लिंक्ड लिस्ट है जिसमें नेविगेशन दोनों तरीकों से संभव है, आगे और पीछे आसानी से सिंगल लिंक्ड लिस्ट की तुलना में। डौबली लिंक्ड ल