链表专项刷题

leetcode no2 两数相加

  • 题目内容为求两个逆序链表的和(首位是个位数,越大越往后)
  • 直接加就可以,留一个存进位的
  • 只要l1,l2,tempnum里面有一个不是空,就要再存进去一个数字
  • 记得执行完以后->next
  • 有可能存在0,所以 每轮的tempnum%10即使是0也要存的
  • 如果已在struct里面给出了构造,那么ListNode*temp=new ListNode就不行了,就得ListNode*temp=new ListNode(0);
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode*ans=new ListNode(0);
        ListNode*anstemp=new ListNode(0);
        anstemp=ans;
        int tempnum=0;
        while(l1!=NULL || l2!=NULL||tempnum)
        {
            if(l1)
            {
                tempnum+=l1->val;
                l1=l1->next;
            }
            if(l2)
            {
                tempnum+=l2->val;
                l2=l2->next;
            }
            ListNode*tempnode=new ListNode(tempnum%10);
            anstemp->next=tempnode;
            tempnum=tempnum/10;
            anstemp=anstemp->next;
        }
        return ans->next;
    }
};
View Code

猜你喜欢

转载自www.cnblogs.com/tingxilin/p/12519451.html