考察的知识点:与链表有关的题基本都是插入,删除,交换顺序等,解决这些问题通常将链表的指针进行修改。
问题分析:遍历两个链表,将两个链表相加,注意链表的长短不一样,还有就是最后一位需不需要进位。
本题解析所用的编程语言: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; }