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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

两个单链表生成相加链表

發(fā)布時(shí)間:2025/4/5 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个单链表生成相加链表 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:

假設(shè)鏈表中每一個(gè)節(jié)點(diǎn)的值都在0~9之間,那么鏈表整體就可以代表一個(gè)整數(shù)。?
例如:9 -> 3 -> 7,可以代表整數(shù)937。?
給定兩個(gè)這種鏈表的頭節(jié)點(diǎn)head1和head2,請(qǐng)生成代表兩個(gè)整數(shù)相加值的結(jié)果鏈表。?
例如:鏈表1為9 -> 3 -> 7,鏈表2為6 -> 3,最后生成新的結(jié)果鏈表為1 -> 0 -> 0 -> 0。

基本思路:

容易想到的方法是先將兩個(gè)鏈表的值表示出來(lái),然后將兩個(gè)值累加起來(lái),再根據(jù)累加結(jié)果生成一個(gè)新鏈表。這種方法實(shí)際是不可行的,因?yàn)殒湵淼拈L(zhǎng)度可以很長(zhǎng),表示的數(shù)字可以很大,容易出現(xiàn)int類型溢出。

方法一。利用兩個(gè)棧,分別將鏈表1、2的值壓入棧中,這樣就生成了兩個(gè)鏈表的逆序棧。將兩個(gè)棧同時(shí)彈出,這樣就相當(dāng)于兩個(gè)鏈表從低位到高位依次彈出,在這個(gè)過(guò)程中生成相加鏈表即可。注意相加過(guò)程中的進(jìn)位問(wèn)題。
?

class Node:def __init__(self,value):self.value = valueself.next = Nonedef addList(head1,head2):if head1 == None or head2 == None:return s1 = []s2 = []while head1!=None:s1.append(head1.value)head1 = head1.nextwhile head2!=None:s2.append(head2.value)head2 = head2.nextn1,n2,n,ca = 0,0,0,0pre,node = None,Nonewhile len(s1)!=0 or len(s2)!=0:if len(s1)==0:n1 = 0else:n1 = s1.pop()if len(s2)==0:n2 = 0else:n2 = s2.pop()n = n1 + n2 + capre = nodenode = Node(n%10)node.next = preca = n//10if ca == 1:pre = nodenode = Node(1)node.next = prereturn node """方法二、將鏈表逆序求解,可以節(jié)省棧空間"""def addList2(head1,head2):if head1 == None or head2 == None:returnhead1 = reverseList(head1)head2 = reverseList(head2)ca,n1,n2,n = 0,0,0,0c1,c2,node,pre = head1,head2,None,Nonewhile c1!=None or c2!=None:if c1!=None:n1 = c1.valueelse:n1 = 0if c2!=None:n2 = v2.valueelse:n2 = 0n = n1 + n2 + capre = nodenode = Node(n%10)node.next = preca = n//10if c1!=None:c1 = c1.nextelse:c1 = Noneif c2!=None:c2 = c2.nextelse:c2 = Noneif ca == 1:pre = nodenode = Node(1)node.next = prereverseList(head1)reverseList(head2)return nodedef reverseList(head):pre,next_ = None,Nonewhile head!=None:next_ = head.nexthead.next = prepre = headhead = next_return pre

?

總結(jié)

以上是生活随笔為你收集整理的两个单链表生成相加链表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。