日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

链表系列之单链表——使用单链表实现大整数相加

發布時間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链表系列之单链表——使用单链表实现大整数相加 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:http://blog.csdn.net/iloveyoujelly/article/details/38321735

大數相加在我之前的一篇博客里有一個使用數組實現的方案,使用單鏈表實現更靈活。

有兩個由單鏈表表示的數。每個結點代表其中的一位數字。

數字的存儲是逆序的, 也就是說個位位于鏈表的表頭。
寫一函數使這兩個數相加并返回結果,結果也由鏈表表示。

eg.

?Input:(3->9->6), (4->7->8->3)

Output:(7->6->5->4)

?

[html]?view plaincopy
  • #include?<iostream>??
  • #include?<stack>??
  • using?namespace?std;??
  • ??
  • typedef?struct?node??
  • {??
  • ????int?data;??
  • ????node?*next;??
  • }Node,?*LinkList;??
  • //建立鏈表??
  • Node*?createList(const?int?a[],?int?n)??
  • {??
  • ????Node?*head,?*endPtr;??
  • ????head?=?endPtr?=?NULL;??
  • ??????
  • ????for(int?i=0;i<n;i++)??
  • ????{??
  • ????????Node?*temp?=?new?Node; / /node = (struct Node *)malloc(sizeof(struct Node));
  • ????????temp->data?=?a[i];??
  • ????????temp->next?=?NULL;??
  • ??
  • ????????if(i==0)??
  • ????????{??
  • ????????????head?=?endPtr?=?temp;??
  • ????????}??
  • ????????else??
  • ????????{??
  • ????????????endPtr->next?=?temp;??
  • ????????????endPtr?=?temp;??
  • ????????}??
  • ????}??
  • ??
  • ????return?head;??
  • }??
  • /*從尾到頭打印鏈表,要求不修改鏈表結構*/??
  • //使用棧適配器??
  • void?PrintListReversing(LinkList?pHead)??
  • {??
  • ????stack<Node*>?nodes;??
  • ????Node*?pNode?=?pHead;??
  • ??????
  • ????if(pNode==NULL)??
  • ????????return;??
  • ??
  • ????while(pNode!=NULL)???//將節點依次入棧??
  • ????{??
  • ????????nodes.push(pNode);??
  • ????????pNode?=?pNode->next;??
  • ????}??
  • ??
  • ????while(!nodes.empty())???//出棧??
  • ????{??
  • ????????pNode?=?nodes.top();???//讀取棧頂元素??
  • ????????cout<<pNode->data;??
  • ????????nodes.pop();???//刪除棧頂元素??
  • ????}??
  • }??
  • //大數相加??
  • Node?*ListAdd(Node*?L1,?Node*?L2)??
  • {??
  • ????if(L1==NULL)??
  • ????????return?L2;??
  • ????if(L2==NULL)??
  • ????????return?L1;??
  • ??
  • ????Node?*ptr1?=?L1,?*ptr2?=?L2,?*ResultPtr=NULL,?*TmpPtr=NULL;??
  • ????int?carry?=?0;??
  • ??
  • ????Node?*p_node?=?new?Node();??
  • ????p_node->data?=?(L1->data+L2->data)%10;??
  • ????p_node->next?=?NULL;??
  • ????carry?=?(L1->data+L2->data)/10;??
  • ????ResultPtr?=?TmpPtr?=?p_node;??
  • ????TmpPtr->next?=?NULL;??
  • ????L1?=?L1->next;??
  • ????L2?=?L2->next;??
  • ??
  • ????while(L1?&&?L2)??
  • ????{??
  • ????????Node?*pNode?=?new?Node();??
  • ????????TmpPtr->next?=?pNode;??
  • ??
  • ????????int?tmp?=?L1->data+L2->data+carry;??
  • ????????carry?=?tmp/10;??
  • ????????pNode->data?=?tmp%10;??
  • ????????pNode->next?=?NULL;??
  • ??
  • ????????TmpPtr?=?TmpPtr->next;??
  • ????????L1?=?L1->next;??
  • ????????L2?=?L2->next;??
  • ????}??
  • ??
  • ????while(L1)??
  • ????{??
  • ????????Node?*pNode?=?new?Node();??
  • ????????TmpPtr->next?=?pNode;??
  • ??
  • ????????int?tmp?=?L1->data+carry;??
  • ????????carry?=?tmp/10;??
  • ????????pNode->data?=?tmp%10;??
  • ????????pNode->next?=?NULL;??
  • ??
  • ????????TmpPtr?=?TmpPtr->next;??
  • ????????L1?=?L1->next;??
  • ????}??
  • ????while(L2)??
  • ????{??
  • ????????Node?*pNode?=?new?Node();??
  • ????????TmpPtr->next?=?pNode;??
  • ??
  • ????????int?tmp?=?L2->data+carry;??
  • ????????carry?=?tmp/10;??
  • ????????pNode->data?=?tmp%10;??
  • ????????pNode->next?=?NULL;??
  • ??
  • ????????TmpPtr?=?TmpPtr->next;??
  • ????????L2?=?L2->next;??
  • ????}??
  • ??
  • ????if(carry)??
  • ????{??
  • ????????Node?*pNode?=?new?Node();??
  • ????????TmpPtr->next?=?pNode;??
  • ??
  • ????????pNode->data?=?carry;??
  • ????????pNode->next?=?NULL;??
  • ????}??
  • ??
  • ????return?ResultPtr;??
  • }??
  • ??
  • int?main()??
  • {??
  • ????int?a[]?=?{1,9,9};??//991??
  • ????int?b[]?=?{9,8,5,6,6,2,8};???//8266589??
  • ????Node?*L1?=?createList(a,3),?*L2?=?createList(b,7),?*L3?=?NULL;??
  • ??
  • ????L3?=?ListAdd(L1,L2);??
  • ??
  • ????PrintListReversing(L1);??
  • ????cout<<"+";??
  • ????PrintListReversing(L2);??
  • ????cout<<"=";??
  • ????PrintListReversing(L3);??
  • ????cout<<endl;??
  • ??
  • ????return?1;??
  • } ?
  • 總結

    以上是生活随笔為你收集整理的链表系列之单链表——使用单链表实现大整数相加的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 波多野结衣在线视频播放 | 国产无码精品一区二区 | 俄罗斯黄色录像 | 亚洲性色图| 五月婷婷六月婷婷 | 亚洲一区日韩精品 | 午夜亚洲福利 | 亚洲宗人网 | 二区三区不卡 | 91精品国产欧美一区二区 | 伊人久久久久久久久久 | 91视频官网| 成人免费看aa片 | 亚洲精品乱码久久久久久自慰 | 欧美色人阁| 欧美福利网 | 2021天天干| 久久久久久不卡 | たちの熟人妻av一区二区 | 欧洲精品无码一区二区 | 日韩视频一二三区 | 成年人免费网址 | 狼人综合伊人 | 国产精品区在线观看 | 一级小毛片 | 国产精品刘玥久久一区 | www成人免费视频 | 亚洲欧洲综合av | 无码人妻丰满熟妇啪啪网站 | 黄色免费网站视频 | 国产免费aa| 182在线视频 | 最新av在线 | 97超碰在线免费 | 久草精品在线观看 | 99热精品在线播放 | 欧美18av | 免费一区二区三区 | 超碰在线公开免费 | 性视频播放免费视频 | 国产电影一区二区三区 | 国语播放老妇呻吟对白 | 亚洲精品91在线 | 99视频精品 | 国产日韩视频在线 | 另类少妇人与禽zozz0性伦 | 日本免费高清一区二区 | 国产在线精 | 96av在线视频| 视频免费在线观看 | 永久免费成人代码 | 亚洲 日本 欧美 中文幕 | 一级特黄妇女高潮2 | 中文字幕偷拍 | 性欢交69精品久久久 | 一级片在线观看视频 | 人人妻人人澡人人爽欧美一区双 | 穿情趣内衣被c到高潮视频 欧美性猛交xxxx黑人猛交 | 男女啪啪网站 | 伊人激情综合网 | 97se亚洲国产综合在线 | 超碰97干 | 汗汗视频 | 免费大片黄在线观看视频网站 | 国产成人精品无码免费看81 | 性色av一区 | 99热这里只有精品在线 | 美女大逼| 丁香婷婷一区二区三区 | 日本aⅴ在线观看 | 欧美一区二区三区久久成人精品 | 成人免费一区二区三区在线观看 | av私库在线观看 | 成人av免费| 一区二区三区麻豆 | www.日韩视频 | 全程粗话对白视频videos | 久久性 | 精品在线播放视频 | 靠逼网站在线观看 | 中文字幕在线一区二区三区 | 女人下面无遮挡 | 亚洲国产剧情 | 怡春院欧美 | 午夜影院在线视频 | 国产亚洲精 | 四虎成人免费视频 | 四虎最新站名点击进入 | 欧美亚洲在线视频 | 久久高清一区 | 91精品国产色综合久久不卡98口 | 欧美图片一区 | 天天躁夜夜躁狠狠是什么心态 | www.欧美在线观看 | 日本高清视频www | 久久一久久 | 久久久成人网 | 中文字幕一区二区三区精彩视频 | 最近中文字幕免费mv视频7 |