鍊錶 兩數相加

2021-09-28 02:25:02 字數 1096 閱讀 5838

零、題目

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

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

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭

二、擬定方案

1 獲取加法中,每一位的分開的元素;

2 進製;

3 獲取每個節點的值;

4 插入節點,尾部插入;

三、code

struct listnode* addtwonumbers(struct listnode* l1, struct listnode* l2)else

if(l2 == null)

else

int sum = l1val +l2val + carry;

carry = sum/10;

struct listnode* sumnode = (struct listnode*)malloc(sizeof(struct listnode));

sumnode->val = sum%10;

sumnode->next = null;

tail->next = sumnode;

tail = sumnode;

if(l1 != null) l1 = l1->next;

if(l2 != null) l2 = l2->next;

}return head->next;

}

四、回顧

1 這裡的尾部插入,與上乙個題中的尾部插入不一樣

1) 將當前節點的next值,賦值給新建立的節點,然後再將本節點給加上;

2)生成本節點資訊,將該節點資訊賦值給鍊錶中最後乙個節點,然後再將鍊錶中最後乙個指標更新為當前節點;

3)區別有兩點,第一是是否繼承了上一次鍊錶中,最後乙個節點的next值,為空或者為零;選擇為零的原因是,此處使用陣列模擬鍊錶,初始化的表示下乙個值得陣列,預設值都為零;

2 當前遇到兩種題型,第一是在什麼位置插入該節點,第二個是順序插入,但是插入什麼樣的節點;

3 一般情況都是尾部插入的方式,以及第乙個節點為空;

兩數相加 鍊錶

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

兩煉表數相加

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

鍊錶兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...