兩數相加(鍊錶)

2021-09-28 14:41:46 字數 1103 閱讀 7904

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

示例:

輸入:(2-

>4-

>3)

+(5-

>6-

>4)

輸出:7

->0-

>

8原因:342

+465

=807

取出鍊錶對應結點的值,相加結果存到新鍊錶對應的結點,由於每個結點只存一位數,而相加結果有可能是兩位,因此需要進製,每次相加時將進製加入計算。

具體如下:

建立兩個結點用來分別遍歷兩個鍊錶,都指向對應鍊錶的首結點。

建立新鍊錶存放結果,初始化值為0,建立乙個結點用來存放每次的結果。

1)遍歷兩鍊錶,直到兩鍊錶都為空:

a. 取出兩鍊錶的值與進製carry相加為sum,該值可能大於10,因此用carry儲存每次相加的結果的進製進製值carry=sum/10,

b. 將sum的個位(sum%10)存入新煉表中下乙個結點(這樣,提前建立了新的結點,新鍊錶前移時就不會報空指標異常)

c. 用於遍歷的兩個結點前進一步。

d. 新鍊錶也前進一步。

2)最後,遍歷結束,判斷carry是否為0,若不為0,則將carry的值存入新鍊錶的下乙個結點。

public

static listnode addtwonumbers

(listnode l1, listnode l2)

else

if(cur2!=null)

else

sum=x+y+carry;

carry=sum/10;

cur.next=

newlistnode

(sum%10)

; cur=cur.next;

if(cur1!=null)

if(cur2!=null)}if

(carry!=0)

return result.next;

}

兩數相加 鍊錶

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

兩煉表數相加

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

鍊錶兩數相加

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