1 3如何計算兩個單鏈表代表的數之和

2022-07-13 16:51:11 字數 2501 閱讀 3354

class node:

def __init__(self, data=none, next=none):

self.data = data

self.next = next

# 輸出鍊錶

def print_link(head):

cur = head.next

while cur.next != none:

print(cur.data, end=' ')

cur = cur.next

print(cur.data)

# 輸出計算結果,將結果鍊錶逆置,從第一的不為0的節點開始輸出

def print_str(head):

cur = head.next

f = 1

while cur.next != none:

if f and cur.data != 0:

print(cur.data, end='')

f = 0

elif f == 0:

print(cur.data, end='')

cur = cur.next

print(cur.data)

# 構造初始鍊錶

def con_link(nums):

head = node()

cur = head

for num in nums:

node = node(num)

cur.next = node

cur = node

return head

# 按位計算,個位->十位->百位以此類推(大整數加法)

def min_compute(p1, p2, p3):

f = 0

while p1:

res = p1.data + p2.data + f

if res < 10:

p3.data = res

f = 0

else:

p3.data = res % 10

f = 1

p1 = p1.next

p2 = p2.next

p3 = p3.next

while p2:

res = p2.data + f

if res < 10:

p3.data = res

f = 0

else:

p3.data = res % 10

f = 1

p2 = p2.next

p3 = p3.next

if f == 1:

p3.data = f

# 逆轉鍊錶

def reverse_link(head):

if head.next == none or head == none:

return

pre = head.next

cur = head.next.next

pre.next = none

while cur.next != none:

next = cur.next

cur.next = pre

pre = cur

cur = next

cur.next = pre

head.next = cur

print_str(head)

def compute(head1, head2, length1, length2):

p1 = head1.next

p2 = head2.next

# 構造結果鍊錶,考慮到進製的情況結果鍊錶長度應該比加數字數多一位

nums = [0 for i in range(max(length1, length2) + 1)]

head3 = con_link(nums)

p3 = head3.next

# 兩個加數長度不同時應該分別考慮

if length2 >= length1:

min_compute(p1, p2, p3)

else:

min_compute(p2, p1, p3)

reverse_link(head3)

if __name__ == '__main__':

s1 = input("link1>>:")

nums1 = list(map(int, s1.split(' ')))

length1 = len(nums1)

s2 = input("link2>>:")

nums2 = list(map(int, s2.split(' ')))

length2 = len(nums2)

link1 = con_link(nums1)

link2 = con_link(nums2)

print_link(link1)

print_link(link2)

compute(link1, link2, length1, length2)

python如何計算兩個單鏈表所代表的數之和

方法一 整數相加法 主要思路 分別遍歷兩個鍊錶 求出兩個鍊錶所代表的整數的值,然後把這兩個整數進 行相加,最後把它們的和用鍊錶的形式表示出來。這種方法的優點是計算簡單,但是有個非 常大的缺點 當鍊表所代表的數很大的時候 超 出 了 long 的表示範圍 就無法使用這種方 法了。主要思路 對鍊錶中的結...

python實現計算兩個單鏈表所代表的數之和

華為筆試 題目描述 給定兩個單鏈表,鍊錶的每個結點代表一位數,計算兩個數的和。例如 輸入鍊錶 3一 1一 5 和鍊錶 5一 9一 2 輸出 8 0 8,即 513 295 808,注意個位數在煉表頭。鍊錶相加法 主要思路 對鍊錶中的結點直接進行相加操作,把相加的和儲存到新的鍊錶中對應 的結 點中,同...

JS 兩數之和 兩個單鏈表

兩數之和 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。題目給了兩個非空的鍊錶,我們要將...