題目 :
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
示例 :
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)解題思路 :輸出:7 -> 0 -> 8
原因:342 + 465 = 807
將進製 carry初始化為 0將 p 和 q 分別初始化為列表 l1 和 l2 的頭部遍歷列表 l1和 l2直至到達它們的尾端。檢查 carry=1 是否成立,如果成立,則向返回列表追加乙個含有數字1 的新結點。如果看解題思路覺得懵,請結合**理解
#include
#include
#include
//鍊錶節點結構體
struct listnode
;//鍊錶的建立
//引數:字串
//函式功能:位數按照逆序的方式儲存在鍊錶中
struct listnode *
node_build
(char
* digits)
//把新節點加入鍊錶
cur->next = next;
cur = next;
}return head;
}//鍊錶輸出函式
void
show_node
(struct listnode *list_node)
printf
("null\n");
}struct listnode *
listnode_add
(struct listnode *l1,
struct listnode *l2)
(l1 !=
null)?
(sum +
= l1->val,l1=l1->next)
:(sum +=0
);(l2 !=
null)?
(sum +
= l2->val,l2=l2->next)
:(sum +=0
);//節點的值存放sum的個位數
next->val = sum %10;
//進製標誌
sum = sum /10;
next->next =
null
;//把新節點加入鍊錶
cur->next = next;
cur = next;
}return head;
}int
main
(void
)
執行效果
LeedCode 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。輸入 2 4 3 5 6 4 輸出 7 0...
Leetcode NO 2 兩數相加 鍊錶相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
leetcode 鍊錶相加
給定兩個用鍊錶表示的整數,每個節點包含乙個數字。這些數字是反向存放的,也就是個位排在鍊錶首部。編寫函式對這兩個整數求和,並用鍊錶形式返回結果。示例 輸入 7 1 6 5 9 2 即617 295 輸出 2 1 9,即912 採用原地演算法,比較兩個鍊錶長度,如果長度一致,那麼鍊錶相加到任一鍊錶,計算...