Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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. सी ++ में लिंक्ड सूची में लूप की लंबाई पाएं

    इस समस्या में, हमें एक लिंक की गई सूची दी जाती है जिसमें लूप हो सकते हैं। हमारा कार्य लिंक्ड सूची में लूप की लंबाई ज्ञात करना है। समस्या का विवरण: हमें लूप में नोड्स की संख्या गिनने की आवश्यकता है यदि इसमें लूप है अन्यथा -1 लौटाएं। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: लिंक्ड-लिस्

  1. C++ में सिंगल लिंक्ड लिस्ट में सभी प्राइम नोड्स का उत्पाद

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

  1. सी++ में डबल लिंक्ड लिस्ट का आकार खोजने का कार्यक्रम

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