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

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


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

इसे हल करने के लिए हमें नीचे दिए गए चरणों का पालन करना होगा -

  • temp और fracPoint नाम के दो पॉइंटर्स लें, फिर उन्हें क्रमशः null और start से प्रारंभ करें।
  • temp पॉइंटर के हर k जंप के लिए, fracPoint पॉइंटर का एक जंप करें।

उदाहरण

#include 
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++ में मल्टीलेवल लिंक्ड सूची को समतल करना C++ में मल्टीलेवल लिंक्ड सूची को समतल करना

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

  1. - C++ में डबल लिंक्ड सूची में सबसे बड़ा नोड ज्ञात करें

    इस समस्या में, हमें एक डबल लिंक्ड सूची LL दी गई है। हमारा कार्य डबल लिंक्ड सूची में सबसे बड़ा नोड ज्ञात करना है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट : लिंक्ड-सूची = 5 -> 2 -> 9 -> 8 -> 1 -> 3 आउटपुट : 9 समाधान दृष्टिकोण समस्या को हल करने का एक सरल दृष्टिकोण लिंक्ड-सूची को

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

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