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

C++ में लिंक्ड लिस्ट में फ्रैक्शनल (या n/k - th) नोड खोजें

मान लीजिए कि हमारे पास एक एकल लिंक की गई सूची और संख्या k है। हमें (n/k)वें तत्व को खोजने के लिए एक फ़ंक्शन लिखना होगा, जहां n सूची में तत्वों की संख्या है। दशमलव के लिए, हम अधिकतम मान चुनेंगे। इसलिए यदि सूची 1, 2, 3, 4, 5, 6, और k =2 की तरह है, तो आउटपुट 3 होगा, जैसे n =6 और k =2, तो हम n/k th नोड को प्रिंट करेंगे ताकि 6/ 2 वां नोड =3 नोड जो 3 है।

इसे हल करने के लिए हमें कुछ स्टेप्स फॉलो करने होंगे जैसे कि नीचे -

  • अस्थायी और फ्रैकप्वाइंट नामक दो पॉइंटर लें, फिर उन्हें नल से प्रारंभ करें और क्रमशः प्रारंभ करें।
  • प्रत्येक k के लिए, अस्थायी सूचक की छलांग, फ़्रेकपॉइंट सूचक की एक छलांग लगाएं।

उदाहरण

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
      Node* next;
};
Node* getNode(int data) {
   Node* new_node = new Node;
   new_node->data = data;
   new_node->next = NULL;
   return new_node;
}
Node* fractionalNodes(Node* start, int k) {
   if (k <= 0 || start == NULL)
      return NULL;
   Node* fracPoint = NULL;
   int i = 0;
   for (Node* temp = start; temp != NULL; temp = temp->next) {
      if (i % k == 0) {
         if (fracPoint == NULL)
            fracPoint = start;
         else
            fracPoint = fracPoint->next;
      }
      i++;
   }
   return fracPoint;
}
void printList(Node* node) {
   while (node != NULL) {
      cout << node->data << " ";
      node = node->next;
   }
   cout << endl;
}
int main(void) {
   Node* start = getNode(1);
   start->next = getNode(2);
   start->next->next = getNode(3);
   start->next->next->next = getNode(4);
   start->next->next->next->next = getNode(5);
   int k = 2;
   cout << "List is: ";
   printList(start);
   Node* answer = fractionalNodes(start, k);
   cout << "\nFractional node is " << answer->data;
}

आउटपुट

List is: 1 2 3 4 5
Fractional node is 3

  1. C++ में एक बहुस्तरीय लिंक्ड सूची को समतल करें

    इस समस्या में, हमें एक बहुस्तरीय लिंक्ड सूची दी गई है। हमारा काम एक बहुस्तरीय लिंक्ड सूची को समतल करने के लिए एक प्रोग्राम बनाना है। फ़्लैटनिंग ऑपरेशन इस तरह से किया जाता है कि पहले स्तर के नोड्स पहले लिंक की गई सूची में होंगे और फिर दूसरे स्तर के नोड होंगे। बहुस्तरीय लिंक की गई सूची एक बहु-आयामी

  1. C++ में डबल लिंक्ड लिस्ट में सबसे बड़ा नोड खोजें

    इस समस्या में, हमें एक डबल लिंक्ड लिस्ट LL. हमारा काम है डबली लिंक्ड लिस्ट में सबसे बड़ा नोड ढूंढना । समस्या को समझने के लिए एक उदाहरण लेते हैं, Input : linked-list = 5 -> 2 -> 9 -> 8 -> 1 -> 3 Output : 9 समाधान दृष्टिकोण समस्या को हल करने का एक सरल तरीका लिंक्ड-लिस्ट को ट्रेस करना

  1. C++ में एक बाइनरी ट्री में सबसे गहरा नोड खोजें

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