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

लिंक्ड लिस्ट द्वारा दर्शाई गई दो संख्याओं को जोड़ें

यहां हम देखेंगे कि दो संख्याओं को कैसे जोड़ा जाए जो अलग-अलग लिंक्ड लिस्ट में स्टोर हैं। लिंक्ड लिस्ट में, संख्याओं के प्रत्येक अंक को स्टोर किया जाता है। यदि संख्या 512 है, तो इसे इस तरह स्टोर किया जाएगा:

512 = (5) -> (1) -> (2) -> NULL

हम इस प्रकार की दो लिस्ट प्रदान कर रहे हैं, हमारा कार्य उन्हें जोड़ना और योग की गणना के बाद परिणाम प्राप्त करना है। यहां हम C++ STL लिंक्ड लिस्ट का उपयोग कर रहे हैं।

एल्गोरिदम

addListNumbers(l1, l2)

शुरुआत
    अग्रणी 0 जोड़कर l1 और l2 की लंबाई समायोजित करें
    carry := 0
    res := एक खाली लिस्ट
    l1 के प्रत्येक नोड n के लिए, अंतिम से पहले तक स्कैन करें
        item := (l1.item + l2.item + carry) mod 10
        item को res की शुरुआत में डालें
        carry := (l1.item + l2.item + carry) / 10
    पूर्ण
    यदि carry 0 नहीं है, तो
        carry को res की शुरुआत में जोड़ें
    यदि समाप्त
    res वापस करें
समाप्त

उदाहरण

#include <iostream>
#include <list>
using namespace std;

list<int> addListNumbers(list<int> l1, list<int> l2) {
    if (l1.size() > l2.size()) {
        for (int i = l2.size(); i != l1.size(); i++)
            l2.push_front(0);
    } else if (l1.size() < l2.size()) {
        for (int i = l1.size(); i != l2.size(); i++)
            l1.push_front(0);
    }
    list<int>::reverse_iterator it1 = l1.rbegin();
    list<int>::reverse_iterator it2 = l2.rbegin();
    list<int> result;
    int carry = 0;
    while (it1 != l1.rend()) {
        result.push_front((*it1 + *it2 + carry) % 10);
        carry = (*it1 + *it2 + carry) / 10;
        it1++; it2++;
    }
    if (carry != 0)
        result.push_front(carry);
    return result;
}

list<int> numToList(int n) {
    list<int> numList;
    while (n != 0) {
        numList.push_front(n % 10);
        n /= 10;
    }
    return numList;
}

void displayListNum(list<int> numList) {
    for (auto it = numList.begin(); it != numList.end(); it++)
        cout << *it;
    cout << endl;
}

int main() {
    int n1 = 512;
    int n2 = 14578;
    list<int> n1_list = numToList(n1);
    list<int> n2_list = numToList(n2);
    list<int> res = addListNumbers(n1_list, n2_list);
    cout << "First number: "; displayListNum(n1_list);
    cout << "Second number: "; displayListNum(n2_list);
    cout << "Result: "; displayListNum(res);
    return 0;
}

आउटपुट

First number: 512
Second number: 14578
Result: 15090
  1. C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड के दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरा ब्लॉक अगले फील्ड का पता रखता है। मान लीजिए हमारे पास एक लिंक्ड लिस्ट है जैसे कि प्रत्येक नोड में एक रैंडम पॉइंटर होता है जो लिस्ट में अन्य नोड्स की ओर इंगित करता है।

  1. Python से लिंक्ड लिस्ट के रूप में दिए गए दो पॉलीनोमियल्स को कैसे जोड़ें? Python से लिंक्ड लिस्ट के रूप में दिए गए दो पॉलीनोमियल्स को कैसे जोड़ें?

    पावर के अनुसार सॉर्टेड लिंक्ड लिस्ट पॉलीनोमियल्स को मर्ज-जैसे एल्गोरिदम से जोड़ें: समान पावर के कोएफिशिएंट्स जोड़ें। एल्गोरिदम डमी नोड और करंट नोड इनिशियलाइज़ करें। जब तक दोनों लिस्ट्स खाली नहीं: पावर कंपेयर करें। poly2.power: poly1 नोड अटैच करें। poly1.power < poly2.power: poly2 नोड अटैच करें। सम

  1. पायथन प्रोग्राम: दो संख्याएं जोड़ें पायथन प्रोग्राम: दो संख्याएं जोड़ें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट हमें दो बड़ी संख्याएं दी जाएंगी और हमें उन्हें जोड़कर आउटपुट प्रदर्शित करने की आवश्यकता है। ब्रूटफोर्स दृष्टिकोण ऑपरेंड्स के बीच + ऑपरेटर का उपयोग करना होगा या हम दो नंबर्स को एक इटरे