華為筆試
題目描述:
給定兩個單鏈表,鍊錶的每個結點代表一位數,計算兩個數的和。例如 :輸入鍊錶 (3一》
1一》5)和鍊錶(5一》9一》2),輸出 : 8->0->8, 即 513+295=808, 注意個位數在煉表頭。
鍊錶相加法
主要思路 : 對鍊錶中的結點直接進行相加操作,把相加的和儲存到新的鍊錶中對應 的結 點中,同時還要記錄結點相加後的進製。 如下圖所示 :
使用這種方法需要注意如下幾個問題: cl)每組結點進行相加後需要記錄其是否有進製 ; (2)如果兩個鍊錶 hl 與 h2 的長度不同(長度分別為 ll 和 l2,且 ll實現主要功能:
def doublelinkadd(head1, head2):
# 如果有乙個鍊錶為空,直接返回另外乙個鍊錶
if head1 is none:
return head2
if head2 is none:
return head1
# 引入變數及初始化,c表示進製,resultlink儲存相加後的節點,cur1, cur2為操作的指標
c = 0
resultlink = linkedlist()
cur1 = head1
cur2 = head2
# 迴圈依次相加對應節點的值,結果新增到resultlink
while cur1 is not none and cur2 is not none:
sums = cur1.item + cur2.item + c
c = sums // 10 # 整除,例:27//10=2, 表示進製
tmp = sums % 10 # 取餘,例:27%10=7,表示相加結果的個位數的值
resultlink.add(tmp)
cur1 = cur1.next
cur2 = cur2.next
# 如果鍊錶1更長,將剩餘節點加入到結果鍊錶中
if cur1 is not none:
while cur1:
sums = cur1.item + c
c = sums // 10
tmp = sums % 10
resultlink.add(tmp)
cur1 = cur1.next
# 如果鍊錶2更長,將剩餘節點加入到結果鍊錶中
if cur2 is not none:
while cur2:
sums = cur2.item + c
c = sums // 10
tmp = sums % 10
resultlink.add(tmp)
cur2 = cur2.next
# 判斷是否還有進製,有進製則加入鍊錶
if c > 0:
resultlink.add(c)
return resultlink
測試:
if __name__ == "__main__":
print("**********==link1**********=")
link1 = linkedlist()
link1.add(3)
link1.add(4)
link1.add(5)
link1.add(6)
link1.add(7)
link1.add(8)
link1.print_link()
print("**********==link2**********=")
link2 = linkedlist()
link2.add(9)
link2.add(8)
link2.add(7)
link2.add(6)
link2.add(5)
link2.print_link()
print("**********==resultlink**********=")
doublelinkadd(link1._head, link2._head).print_link()
輸出:
**********==link1**********=34
5678
**********==link2**********=98
765**********==resultlink**********=23
3339
單鏈表操作之合併兩個單鏈表
本篇部落格為合併兩個單鏈表,有序和無序都可以 其中用到單鏈表的尾插和單鏈表的選擇排序 中大部分操作都在單鏈表基本操作詳解中介紹過,這裡就直接上 include include includetypedef int datatype typedef struct linknode linknode,p...
python如何計算兩個單鏈表所代表的數之和
方法一 整數相加法 主要思路 分別遍歷兩個鍊錶 求出兩個鍊錶所代表的整數的值,然後把這兩個整數進 行相加,最後把它們的和用鍊錶的形式表示出來。這種方法的優點是計算簡單,但是有個非 常大的缺點 當鍊表所代表的數很大的時候 超 出 了 long 的表示範圍 就無法使用這種方 法了。主要思路 對鍊錶中的結...
合併兩個有序單鏈表
include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...