考察的知识点:与链表有关的题基本都是插入,删除,交换顺序等,解决这些问题通常将链表的指针进行修改。
问题分析:遍历两个链表,将两个链表相加,注意链表的长短不一样,还有就是最后一位需不需要进位。
本题解析所用的编程语言:c++
ListNode* addEnergyValues(ListNode* l1, ListNode* l2)
{
ListNode* head = new ListNode(-1);
ListNode* cur = head;
int m = 0; //是否进位
//有一个链表为空则退出
while (l1 && l2)
{
int n = l1->val + l2->val + m;
m = 0;
if (n > 9)
m = 1;
cur->next = new ListNode(n%10);
cur = cur->next;
l1 = l1->next;
l2 = l2->next;
}
if (l1)
l2 = l1;
//if处理后,l2一定不为空
while (l2)
{
int n = l2->val + m;
m = 0;
if (n > 9)
m = 1;
cur->next = new ListNode(n % 10);
cur = cur->next;
l2 = l2->next;
}
//处理最后进位的数
if (m == 1)
cur->next = new ListNode(m);
return head->next;
}

京公网安备 11010502036488号