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

C++ में दी गई लिंक्ड सूची के अंतिम N नोड्स का गुणनफल खोजें

विचार करें कि हमारे पास एक लिंक्ड सूची में कुछ तत्व हैं। हमें अंतिम n तत्वों की संख्या का गुणन परिणाम ज्ञात करना है। n का मान भी दिया गया है। तो अगर सूची [5, 7, 3, 5, 6, 9], और n =3 जैसी है, तो परिणाम 5 * 6 * 9 =270 होगा।

प्रक्रिया सीधे आगे है। हम केवल बाईं ओर से शुरू होने वाले वर्तमान तत्व को पढ़ते हैं, फिर तत्वों को स्टैक में जोड़ते हैं। स्टैक भरने के बाद, n तत्वों को हटा दें और उन्हें उत्पाद से गुणा करें। (शुरुआत में ठेस 1 है), जब n तत्वों की संख्या का पता लगाया जाता है, तो रुकें।

उदाहरण

#include<iostream>
#include<stack>
using namespace std;
   class Node{
   public:
      int data;
      Node *next;
   };
   Node* getNode(int data){
      Node *newNode = new Node;
      newNode->data = data;
      newNode->next = NULL;
      return newNode;
   }
   void append(struct Node** start, int key) {
      Node* new_node = getNode(key);
      Node *p = (*start);
      if(p == NULL){
         (*start) = new_node;
         return;
      }
      while(p->next != NULL){
         p = p->next;
      }
      p->next = new_node;
   }
   long long prodLastNElements(Node *start, int n) {
      if(n <= 0)
         return 0;
      stack<int> stk;
      long long res = 1;
      Node* temp = start;
      while (temp != NULL) {
         stk.push(temp->data);
         temp = temp->next;
      }
      while(n--){
         res *= stk.top();
         stk.pop();
      }
   return res;
}
int main() {
   Node *start = NULL;
   int arr[] = {5, 7, 3, 5, 6, 9};
   int size = sizeof(arr)/sizeof(arr[0]);
   int n = 3;
   for(int i = 0; i<size; i++){
      append(&start, arr[i]);
   }
   cout << "Product of last n elements: " << prodLastNElements(start, n);
}

आउटपुट

Product of last n elements: 270

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

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

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

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

  1. C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें

    मान लीजिए कि हमारे पास एक सकारात्मक पूर्णांक L है, जो एक पूर्ण बाइनरी ट्री में स्तरों की संख्या का प्रतिनिधित्व करता है। इस परफेक्ट बाइनरी ट्री में लीफ नोड्स की संख्या 1 से n तक होती है। जहां n लीफ नोड्स की संख्या है। पैरेंट नोड बच्चों का योग है। हमारा काम इस परफेक्ट बाइनरी ट्री के सभी नोड्स के योग