将1加到代表链表的数字上?

在这里,我们将看到如何将1与存储在链表中的数字相加。在链接列表中,存储了数字的每一位。如果数字是512,那么它将如下存储:

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

我们将列表提供给增量功能。在添加1之后,它将返回另一个列表。在这里,我们使用C ++ STL链表。让我们看看该算法下的更好主意。

算法

crementList(l1)

Begin

   carry := 1

   res := an empty list

   for each node n from l1, scan from last to first, do

      item := (l1.item + carry) mod 10

      insert item at the beginning of res

      carry := (l1.item + carry) / 10

   done

   if carry is not 0, then

      add carry at the beginning of res

   end if

   return res

End

示例

#include<iostream>

#include<list>

using namespace std;

list<int> incListNum(list<int> l1){

   list<int>::reverse_iterator it1 = l1.rbegin();

   list<int> result;

   int carry = 1; //this 1 will be added

   while(it1 != l1.rend()){

      result.push_front((*it1 + carry) % 10);

      carry = (*it1 + carry) / 10;

      it1++;

   }

   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 = 9999;

   list<int> n1_list = numToList(n1);

   list<int> res = incListNum(n1_list);

   cout << "The number: "; displayListNum(n1_list);

   cout << "Result: "; displayListNum(res);

}

输出结果

The number: 9999

Result: 10000

以上是 将1加到代表链表的数字上? 的全部内容, 来源链接: utcz.com/z/350370.html

回到顶部