链表专题更新cpp代码

This commit is contained in:
3119005212
2021-04-28 18:28:00 +08:00
parent 6d96954aa7
commit afd452aeda
15 changed files with 627 additions and 12 deletions

View File

@@ -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=19/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;
}
};
```