給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)為了在 c++ 中表示鍊錶,需要有乙個表示鍊錶中單個結點的資料型別。不但需要包含要儲存的資料結構,還要有乙個指向另乙個相同型別結點的指標。輸出:7 -> 0 -> 8
原因:342 + 465 = 807
建立單鏈表步驟:
建立頭節點 head,並且將當前結點 p指向
頭結點(p = head)
建立下乙個結點q,當前結點p的 下一結點為q(p -> next = q)
當前結點p後移一位(p = p -> next)
// 假設每個結點將儲存乙個型別為 double 的資料項,則可以宣告以下型別來存放結點:
struct listnode
;
// 建立 單鏈表
listnode* head =
newlistnode(0
);// 建立 頭節點 ,初始化為0
listnode* p = head;
宣告乙個中間變數(指標),指向頭結點,用於遍歷鍊錶
p->value =1;
listnode *q=
new listnode;
//建立 第二個節點
q->value =2;
q->next =
nullptr
;// 鍊錶第二個節點結束
p->next = q;
// 第乙個節點指向第二個節點
獲取兩個鍊錶所對應的長度
在較短的鍊錶末尾補零
對齊相加考慮進製
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
// 返回 從 head->next 位址後的所有資料;因為我們預設頭裡面存放 0,
// 所以這裡不需要輸出頭節點,真正需要的資料從頭節點的下乙個開始
return head-
>next;
// 輸出 [7,0,8]
// return head; 輸出 [0,7,0,8]}}
;
參考:
1、2、
3、
LeetCode2 兩數相加
嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...
LeetCode 2 兩數相加
題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...
LeetCode 2 兩數相加
題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...