LeedCode 兩鍊錶相加(c語言)

2021-09-29 22:16:03 字數 1615 閱讀 1062

題目 :

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

示例 :

輸入:(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 採用原地演算法,比較兩個鍊錶長度,如果長度一致,那麼鍊錶相加到任一鍊錶,計算...