LeetCode 2 兩數相加 C 解法

2021-10-09 02:38:19 字數 853 閱讀 4003

此題就是鍊錶進行求和運算並返回新鍊錶,基礎就是模擬正常的算數,從低位到高位兩數分別相加進製,進製用除10運算,新值用除10取餘運算,需要注意與處理的問題就是如何應對兩個鍊錶長度不同,以及最後是否有進製的問題。**及注釋如下:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

if(l2 ==

nullptr

) val2 =0;

else

newval =

(val1 + val2 + carrybit)%10

; carrybit =

(val1 + val2 + carrybit)/10

; templist-

>next =

newlistnode

(newval)

; templist = templist-

>next;

}//用於判斷最後是否有乙個進製

if(carrybit ==1)

return retlist-

>next;}}

;

1. 在鍊錶中為了增強程式可讀性,鍊錶的第乙個節點為無用的,這樣做的缺點就是浪費了乙個節點的記憶體以及最後返回值為retlist->next而不是retlist。

2. 在對val1和val2處理時通過判斷是否到l1或l2尾部而對其進行賦0或具體值,避免了在while迴圈外部判斷先到達哪乙個鍊錶的尾部,使程式更加簡練。

leetcode 2(兩數相加)C

鍊錶 可以改變長度,在刪除物件的時候會自動釋放記憶體,占用的記憶體空間也不需要連續。鍊錶是用 listnode 結點構成的,這些結點之間用指標鏈結。最簡單的單向鍊錶 每個結點代表兩個東西 1.它自己的值value 2.指向下乙個結點的指標next。next為空時,表示是鍊錶的最後乙個結點。p val...

leetcode 2 兩數相加 C

主要部分 一兩周之前剛接觸結構體struct,這個兩數相加的程式還是讓我get到了很多。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 1.在使用malloc分配動態記憶體的時候,需要給他 一整套 struct listnode struct listnode l...

LeetCode2 兩數相加 c

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