Heim > Backend-Entwicklung > C++ > Addieren Sie zwei Zahlen, die durch eine verknüpfte Liste dargestellt werden

Addieren Sie zwei Zahlen, die durch eine verknüpfte Liste dargestellt werden

WBOY
Freigeben: 2023-08-25 12:57:03
nach vorne
749 Leute haben es durchsucht

Addieren Sie zwei Zahlen, die durch eine verknüpfte Liste dargestellt werden

Hier erfahren Sie, wie Sie zwei in separaten verknüpften Listen gespeicherte Nummern hinzufügen. In der verknüpften Liste wird jede Ziffer der Nummer gespeichert. Wenn die Zahl 512 ist, wird sie wie folgt gespeichert. Hier verwenden wir die verknüpfte C++-STL-Liste. Schauen wir uns Algorithmen an, um bessere Ideen für Wetten zu bekommen.

Algorithmus

addListNumbers(l1, l2)

512 = (5)-->(1)-->(2)-->NULL
Nach dem Login kopieren

Beispiel

Begin
   Adjust the l1 and l2 lengths by adding leading 0s with the smaller one
   carry := 0
   res := an empty list
   for each node n from l1, scan from last to first, do
      item := (l1.item + l2.item + carry) mod 10
      insert item at the beginning of res
      carry := (l1.item + l2.item + carry) / 10
   done
   if carry is not 0, then
      add carry at the beginning of res
   end if
   return res
End
Nach dem Login kopieren

Ausgabe

#include<iostream>
#include<list>
using namespace std;
list addListNumbers(list<int> l1, list<int> l2){
   //add leading 0s to the shortest number to make them equal length
   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(list<int>::iterator 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);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAddieren Sie zwei Zahlen, die durch eine verknüpfte Liste dargestellt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage