此題就是鍊錶進行求和運算並返回新鍊錶,基礎就是模擬正常的算數,從低位到高位兩數分別相加進製,進製用除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 開頭。思路 遍歷兩個鍊錶,判斷兩數相加...