您的位置:首页 > 理论基础 > 数据结构算法

LintCode-第168题 链表求和

2016-09-05 22:41 344 查看
描述:         你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中
相反
的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例:
  
给出两个链表 
3->1->5->null
和 [code]5->9->2->null
,返回
8->0->8->null
 public ListNode addLists(ListNode l1, ListNode l2) {// write your code hereListNode node = null;if(l1!=null&&l2!=null){ArrayList<Integer> list = getNodeValue(l1,l2);node = setNode(list);}return node;}//获得两个链表中的值private static ArrayList<Integer> getNodeValue(ListNode node1,ListNode node2 ) {//记录相加后获得的每一位ArrayList<Integer> list = new ArrayList<Integer>();int count=0;int tag = 0;//仅为标志while(true){if(node1==null&&node2!=null){count = node2.val+tag;}else if(node1!=null&&node2==null){count = node1.val+tag;}else if(node1!=null&&node2!=null){count = node1.val+node2.val+tag;}else{if(tag!=0){list.add(tag);}break;}tag = 0;if(count>=10){//count大于10表示有进位count %= 10;tag = 1;}list.add(count);if( node1!=null){node1 = node1.next;}if( node2!=null){node2 = node2.next;}}return list;}//将list中的值设置到链表中private ListNode setNode(ArrayList<Integer> list){ListNode node=node = new ListNode(list.get(0));;ListNode node2=node;for(int i=1;i<list.size();i++){node2.next = new ListNode(list.get(i));node2 = node2.next;}node2.next = null;return node;}
   

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息