mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2025-08-14 18:32:18 +00:00
链表专题更新cpp代码
This commit is contained in:
@@ -69,6 +69,12 @@
|
||||
|
||||
注:这里需要注意得时,链表遍历结束,我们应该跳出循环,但是我们的nlist仍在尾部添加了1节点,那是因为跳出循环时,summod值为1,所以我们需要在尾部再添加一个节点。
|
||||
|
||||
|
||||
|
||||
**题目代码**
|
||||
|
||||
Java Code:
|
||||
|
||||
```java
|
||||
class Solution {
|
||||
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
|
||||
@@ -108,3 +114,45 @@ class Solution {
|
||||
}
|
||||
```
|
||||
|
||||
C++ Code:
|
||||
|
||||
```cpp
|
||||
class Solution {
|
||||
public:
|
||||
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
|
||||
//返回链表
|
||||
ListNode * nList = new ListNode(-1);
|
||||
ListNode * tempnode = nList;
|
||||
//用来保存进位值,初始化为0
|
||||
int summod = 0;
|
||||
while(l1 != nullptr || l2 != nullptr) {
|
||||
//如果l1的链表为空则l1num为0,若是不为空,则为链表的节点值
|
||||
//判断是否为空,为空就设为0
|
||||
int l1num = l1 == nullptr ? 0 : l1->val;
|
||||
int l2num = l2 == nullptr ? 0 : l2->val;
|
||||
//将链表的值和进位值相加,得到为返回链表的值
|
||||
int sum = l1num + l2num + summod;
|
||||
//更新进位值,例18/10=1,9/10=0
|
||||
summod = sum / 10;
|
||||
//新节点保存的值,18 % 8=2,则添加2
|
||||
sum = sum % 10;
|
||||
//添加节点
|
||||
tempnode->next = new ListNode(sum);
|
||||
//移动指针
|
||||
tempnode = tempnode->next;
|
||||
if (l1 != nullptr) {
|
||||
l1 = l1->next;
|
||||
}
|
||||
if (l2 != nullptr) {
|
||||
l2 = l2->next;
|
||||
}
|
||||
}
|
||||
//最后根据进位值判断需不需要继续添加节点
|
||||
if (summod == 1) {
|
||||
tempnode->next = new ListNode(summod);
|
||||
}
|
||||
return nList->next;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user