题解 | #两个链表生成相加链表#

两个链表生成相加链表

http://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

/**

  • Definition for singly-linked list.

  • struct ListNode {

  • int val;

  • ListNode *next;

  • ListNode(int x) : val(x), next(NULL) {}

  • };

  • /
    class Solution {
    public:
    ListNode * reverselist(ListNode *head)
    {

      ListNode *prev=NULL;
      while(head)
      {
          ListNode *next=head->next;
          head->next=prev;
          prev=head;
          head=next;;
      }
      return prev;

    }
    ListNode* addInList(ListNode* l1, ListNode* l2) {

      if(l1==NULL) return l2;
      if(l2==NULL) return l1;
      ListNode *result;
      ListNode *p;
    
      ListNode *nowre;
      l1=reverselist(l1);
      l2=reverselist(l2);
      result=l1;
      p=result;
      int mores=0;
      while(l1 && l2)
      {
          int temp=l1->val+l2->val+mores;
          int s=temp;
          if(temp>=10)
          {
              temp=temp%10;
              mores=s/10;
          }
          else
          {
              mores=0;
          }
           if(result!=nullptr)
           {
          result->val=temp;
           }
          nowre=result;
          result=result->next;
          l1=result;
          l2=l2->next;
      }
      if(l1)
      {
          while(l1)
          {
          int temp=l1->val+mores;
          int s=temp;
          if(temp>=10)
          {
              temp=temp%10;
              mores=s/10;
          }
          else
          {
              mores=0;
          }
          result->val=temp;
          nowre=result;
          result=result->next;
          l1=result;
    
          }
      }
       if(mores>0)
      {
          ListNode *node=new ListNode(mores);
          node->next=NULL;
          nowre->next=node;
      }
    
           if(l2)
      {
          result=l2;
           nowre->next=result;
          while(l2)
          {
          int temp=l2->val+mores;
              int s=temp;
          if(temp>=10)
          {
              temp=temp%10;
              mores=s/10;
          }
          else
          {
              mores=0;
          }
          result->val=temp;
    
          nowre=result;
          result=result->next;
          l2=result;
    
          }
      }
      if(mores>0)
      {
          ListNode *node=new ListNode(mores);
          node->next=NULL;
          nowre->next=node;
      }
      return reverselist(p);

    }
    };

全部评论

相关推荐

头像
05-31 13:23
已编辑
门头沟学院
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务