鍊錶:可以改變長度,在刪除物件的時候會自動釋放記憶體,占用的記憶體空間也不需要連續。
鍊錶是用 listnode 結點構成的,這些結點之間用指標鏈結。最簡單的單向鍊錶:每個結點代表兩個東西 1.它自己的值value ,2.指向下乙個結點的指標next。next為空時,表示是鍊錶的最後乙個結點。
p->value p點的值
p->next p點的下乙個結點
首先題目中給的重要資訊都加粗了,非空鍊錶,逆序儲存
逆序儲存就是根節點存的是個位,然後下乙個結點存十位,再下乙個百位,依次類推。
程式設計中要注意:
1.考慮進製 sum/10就是進1還是進0
sum%10 就是當前位的數值
2.考慮 l1,l2 是不是空的
最後的sum.每往後挪乙個,都要建立乙個新的結點,並且要注意指標的移動。
3.要和結構體裡面的定義相對應,一開始寫的時候忘了對應,導致編譯很多錯誤。
4.使用啞結點。要對頭結點進行操作時,考慮建立啞節點sum,使用
sum->next表示真正的頭節點。這樣可以避免處理頭節點為空的邊界問題
/**
* definition for singly-linked list.
* struct listnode
* };
*/class solution
if(carry==1) // 看最高位有沒有進製
return sum->next;//相當於返回兩束之和的新的頭結點
}};
c/c++ 的奇技淫巧(雕蟲小技) :
鍊錶逆序
鍊錶逆序
不可申請額外空間
啞結點:
啞結點的使用
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 開頭。思路 遍歷兩個鍊錶,判斷兩數相加...
LeetCode2 兩數相加
嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...