最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++單鏈表實(shí)現(xiàn)大數(shù)加法

 更新時間:2020年05月27日 11:57:01   作者:Alex山南水北  
這篇文章主要為大家詳細(xì)介紹了C++單鏈表實(shí)現(xiàn)大數(shù)加法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++單鏈表實(shí)現(xiàn)大數(shù)加法,供大家參考,具體內(nèi)容如下

Input Format

輸入文件包括兩行。

  • 第一行包括一個正整數(shù),保證位數(shù)不超過1000000。
  • 第二行包括一個正整數(shù),保證位數(shù)不超過1000000。

Output Format

輸出文件包括一行。

  • 第一行包括一個正整數(shù)。

Sample Input

10558
22

Sample Output

10580

#include <iostream>

using namespace std;

class BigData {
  friend ostream &operator<<(ostream &os, const BigData &x);

  friend istream &operator>>(istream &is, BigData &x);

  friend BigData operator+(BigData a, BigData b);

private:
  struct node {
    int data;
    node *next;

    node(const short &x, node *n = NULL) {
      data = x;
      next = n;
    }
  };

  node *num;

  void clear();

public:
  BigData(node *p = NULL) {
    if (p == NULL) {
      num = new node(0);
    } else {
      num = p;
    };
  }

  BigData(const BigData &);

  ~BigData() {
    clear();
  }

  BigData &operator=(const BigData &);
};

BigData::BigData(const BigData &x) {
  num = new node(x.num->data);
  node *p = num, *q = x.num;
  while (q->next != NULL) {
    q = q->next;
    p->next = new node(q->data);
    p = p->next;
  }
}

void BigData::clear() {
  node *p = num, *q;
  while (p != NULL) {
    q = p;
    p = p->next;
    delete q;
  }
  num = NULL;
}

BigData operator+(BigData a, BigData b) {
  BigData tmp;
  BigData::node *p, *q, *end;
  int carry;
  tmp.num = end = new BigData::node(a.num->data + b.num->data);
  carry = tmp.num->data / 10;
  tmp.num->data %= 10;
  p = a.num->next;
  q = b.num->next;
  end = tmp.num;
  while (p != NULL && q != NULL) {
    end->next = new BigData::node(p->data + q->data + carry);
    end = end->next;
    carry = end->data / 10;
    end->data %= 10;
    p = p->next;
    q = q->next;
  }
  if (p == NULL)p = q;
  while (p != NULL) {
    end->next = new BigData::node(p->data + carry);
    end = end->next;
    carry = end->data / 10;
    end->data %= 10;
    p = p->next;
  }
  if (carry != 0) {
    end->next = new BigData::node(carry);
    return tmp;
  }
}

BigData &BigData::operator=(const BigData &x) {
  if (&x == this)return *this;
  clear();
  num = new node(x.num->data);
  node *p = num, *q = x.num;
  while (q->next != NULL) {
    q = q->next;
    p->next = new node(q->data);
    p = p->next;
  }
  return *this;
}

istream &operator>>(istream &is, BigData &x) {
  char ch;
  x.clear();
  while ((ch = is.get()) != '\n') {
    x.num = new BigData::node(ch - '0', x.num);
  }
  return is;
}

ostream &operator<<(ostream &os, const BigData &x) {
  string s;
  BigData::node *p = x.num;
  while (p != NULL) {
    s = char(p->data + '0') + s;
    p = p->next;
  }
  for (int i = 0; i < s.size(); ++i)os << s[i];
  return os;
}

int main() {
  BigData a, b, c;
  cin >> a >> b;
  c = a + b;
  cout << c;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++結(jié)構(gòu)體字節(jié)對齊示例

    C++結(jié)構(gòu)體字節(jié)對齊示例

    這篇文章主要為大家介紹了C++結(jié)構(gòu)體字節(jié)對齊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • C++實(shí)現(xiàn)簡易圖書館管理系統(tǒng)

    C++實(shí)現(xiàn)簡易圖書館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡易圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c++野指針的原理以及避免方法

    c++野指針的原理以及避免方法

    這篇文章主要介紹了c++野指針的原理以及避免方法,幫助大家更好的學(xué)習(xí)和理解c++,感興趣的朋友可以了解下
    2020-08-08
  • C/C++實(shí)現(xiàn)獲取系統(tǒng)時間的示例代碼

    C/C++實(shí)現(xiàn)獲取系統(tǒng)時間的示例代碼

    C 標(biāo)準(zhǔn)庫提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當(dāng)前系統(tǒng)的日歷時間。本文將通過一些簡單的示例為大家講講C++獲取系統(tǒng)時間的具體方法,需要的可以參考一下
    2022-12-12
  • 淺析C++中cout的運(yùn)行機(jī)制

    淺析C++中cout的運(yùn)行機(jī)制

    關(guān)于C++中cout的使用,相信大家再熟悉不過了,然而對于cout是如何輸出的?輸出的機(jī)制是啥,需要進(jìn)一步的了解。本章娓娓道來。前幾天在網(wǎng)上看到這么一個題目
    2013-10-10
  • C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實(shí)現(xiàn)方法

    C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實(shí)現(xiàn)方法,簡單說明了哈夫曼樹的原理,并結(jié)合具體實(shí)例形式分析了C++實(shí)現(xiàn)哈夫曼樹的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • c++智能指針的超詳細(xì)講解

    c++智能指針的超詳細(xì)講解

    c++程序設(shè)計中經(jīng)常會用堆內(nèi)存,程序員要自己管理內(nèi)存的申請和釋放,使用原始指針,容易造成堆內(nèi)存泄漏(忘記釋放),二次釋放,使用智能指針能更好的管理堆內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于c++智能指針的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語言實(shí)現(xiàn)ATM機(jī)存取款系統(tǒng)

    C語言實(shí)現(xiàn)ATM機(jī)存取款系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)ATM機(jī)存取款系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言實(shí)例真題講解數(shù)據(jù)結(jié)構(gòu)中單向環(huán)形鏈表

    C語言實(shí)例真題講解數(shù)據(jù)結(jié)構(gòu)中單向環(huán)形鏈表

    鏈表可以說是一種最為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)了,而單向鏈表更是基礎(chǔ)中的基礎(chǔ)。鏈表是由一組元素以特定的順序組合或鏈接在一起的,不同元素之間在邏輯上相鄰,但是在物理上并不一定相鄰。在維護(hù)一組數(shù)據(jù)集合時,就可以使用鏈表,這一點(diǎn)和數(shù)組很相似
    2022-04-04
  • C++實(shí)現(xiàn)中值濾波的示例代碼

    C++實(shí)現(xiàn)中值濾波的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)中值濾波的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評論

濮阳市| 高雄市| 亳州市| 盱眙县| 武义县| 桂阳县| 高青县| 微博| 全椒县| 巴林右旗| 沾益县| 志丹县| 昭苏县| 晋城| 会东县| 昌都县| 磐安县| 合川市| 桦甸市| 江华| 浦江县| 宣汉县| 壶关县| 宿迁市| 会东县| 民乐县| 江达县| 宜兰市| 阿克苏市| 项城市| 沙坪坝区| 清河县| 大兴区| 榆社县| 克什克腾旗| 化隆| 怀远县| 浦城县| 阜阳市| 灌云县| 睢宁县|