2,Add Two Number (LinkList Math)
来源:互联网 发布:js代码反混淆 编辑:程序博客网 时间:2024/06/08 10:32
/*You are given two linked lists representing two non-negative numbers.The digits are stored in reverse order and each of their nodes contain a single digit.Add the two numbers and return it as a linked list.Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8*/#include<stdlib.h>#include<stdio.h>struct ListNode { int val; struct ListNode *next;};void printList(ListNode *& header){ if (header == NULL){ return; } ListNode* node = header ; while (node != NULL ){ printf( "%d ", node->val); node = node->next; } printf( "\n");}void createList(ListNode *& header, int * array , int len){ header = (ListNode *)malloc(sizeof( ListNode)); ListNode* tailer = header ; ListNode* tempNode = NULL ; ListNode* pre = header ; for (int i = 0; i < len; i++){ tailer->val = *( array+i); pre = tailer; tempNode = ( ListNode*)malloc(sizeof (ListNode)); tailer->next = tempNode; tailer = tempNode; } pre ->next= NULL;} ListNode* addTwoNumbers( ListNode* l1 , ListNode* l2) { if (l1 == NULL){ return l2 ; } if (l2 == NULL){ return l1 ; } ListNode* header = (ListNode *)malloc(sizeof( ListNode)); ListNode* tailer = header; ListNode* tempNode = NULL ; ListNode* pre = header; int isIncress = 0; while (l1 != NULL && l2 != NULL ){ int value = l1 ->val + l2->val; if (isIncress){ value += 1; isIncress = 0; } if (value >= 10) { value = value % 10; isIncress = 1; } tailer->val = value; pre = tailer; tempNode = ( ListNode*)malloc(sizeof (ListNode)); tailer->next = tempNode; tailer = tempNode; l1 = l1 ->next; l2 = l2 ->next; } if (l1 == NULL && l2 == NULL && isIncress){ tailer->val = 1; pre = tailer; tempNode = ( ListNode*)malloc(sizeof (ListNode)); tailer->next = tempNode; tailer = tempNode; isIncress = 0; } while (l1 != NULL){ int value = l1 ->val; if (isIncress){ value += 1; isIncress = 0; } if (value >= 10) { value = value % 10; isIncress = 1; } tailer->val = value; pre = tailer; tempNode = ( ListNode*)malloc(sizeof (ListNode)); tailer->next = tempNode; tailer = tempNode; l1 = l1 ->next; } while (l2 != NULL){ int value = l2 ->val; if (isIncress){ value += 1; isIncress = 0; } if (value >= 10) { value = value % 10; isIncress = 1; } tailer->val = value; pre = tailer; tempNode = ( ListNode*)malloc(sizeof (ListNode)); tailer->next = tempNode; tailer = tempNode; l2 = l2 ->next; } if (isIncress){ tailer->val = 1; pre = tailer; tempNode = ( ListNode*)malloc(sizeof (ListNode)); tailer->next = tempNode; tailer = tempNode; } pre ->next= NULL; return header;}int main(){ int array1[1] = { 1 }; int array2[2] = { 9,9 }; ListNode * h1 = NULL ; ListNode * h2 = NULL ; createList(h1, array1, 1); createList(h2, array2, 2); printList(h1); printList(h2); ListNode* result = addTwoNumbers(h1, h2); printList(result); printf( "Hello world \n"); return 0;}
0 0
- 2,Add Two Number (LinkList Math)
- LeetCode---(2) Add Two Number
- LeetCode 2 Add Two Number
- [Leetcode] Add Two Number
- 【leetcode】 add two number
- Add Two Number
- CareerCup Add two number
- LeetCode(Add Two Number)
- LEETCODE: Add Two Number
- leetcode-Add Two Number
- LeetCode Add Two Number
- Add Two Number
- Add Two Number - Leetcode
- Add Two Number
- leetcode2 add two number
- LeetCode - Add Two Number
- Add Two Number
- Add Two Number II
- golang+litide+ubuntu环境配置
- PHP学习(四)--数据类型之间相互转换
- Kernel Trick——核机制,更高维空间内积的快速计算
- Cocos2d-x学习(二) 在Cocos2d-x2.2.6搭建你第一个项目
- 1,Two sum (Hashtable Array)
- 2,Add Two Number (LinkList Math)
- Swift学习笔记3——String和Character
- 索引
- 配置汇编环境=>可能会长期更新
- Linux(CentOS)下的apache服务器配置与管理
- Hibernate更新某些字段的几种update方法
- 判断s3字符串是否由s1和s2交错组成
- Hibernate sql操作的三种方法 HQL QBC Native SQL查询
- HDU 5477 A Sweet Journey(本场的最水题,过程处理好是关键)——2015 ACM/ICPC Asia Regional Shanghai Online