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
* */