leetcode 2两数相加

ACM打多了,好久没写指针的题目了

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#define LL long long
using namespace std;
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 *
 */
 struct ListNode{
     int val;
     ListNode *next;
     ListNode(int x) : val(x),next(NULL){ }
 };
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode *sum = new  ListNode(0);  //生成头的空指针
        ListNode *cur = sum;   //生成一个当前指针
        int a,b,jw=0;
        while (l1!=NULL || l2!=NULL){
            if(l1!=NULL)a=l1->val;
            else a=0;
            if(l2!=NULL)b=l2->val;
            else b=0;
            cur->next=new ListNode((a+b+jw)%10);
            //当前指针指向下一个新节点
            cur=cur->next;
            //再移动这个当前指针
            if ((a+b+jw)/10){
                jw=1;
            }else {
                jw = 0;
            }
            if (l1!=NULL)l1=l1->next;
            if (l2!=NULL)l2=l2->next;
        }
        if (jw==1)
        {
            cur->next=new ListNode(1);
        }
        //那么节点的最开始节点应该是把头空节点给抛弃
        return sum->next;
    }
};
/*
 *
 * 7
  4 5 6 7 0 1 2
 * */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值