add two numbers

来源:互联网 发布:怎么禁止程序访问网络 编辑:程序博客网 时间:2024/06/02 23:20

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

这是考察单链表的相关操作,主要就是插入与边界的检测问题。我的想法是:

1.规定用 l1 来返回这个结果;

2.因为要遍历 l1与l2 的所有结点,所以定义两个遍历指针,分别为 p1, p2,同时,由于存在一个链长一个短的情况,为了方便程序的编写,添加一个前置指针,用于添加新的结点或者连接 l1 与 l2

3.p1与 p2 指向的结点有四种情况,分别是:都为null, 只有一个为null, 都非null.于是分四种情况。程序如下:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        //把两条链合成一条l1,返回        ListNode *p1, *p2, *pre;        int sum = 0;int add = 0;        p1 = l1;        p2 = l2;        pre = p1;if (!l1)return l2;if (!l2)return l1;        while ( p1 && p2 ){sum = p1->val + p2->val + add;p1->val = sum % 10;add = sum / 10;pre = p1;p1 = p1->next;p2 = p2->next;}if ( !p1 && !p2 ){if (add){ListNode* node = new ListNode(1);pre->next = node;}}else if (p1)//p1 不为空{while (p1){sum = p1->val + add;p1->val = sum % 10;add = sum / 10;pre = p1;p1 = p1->next;}if (add){ListNode* node = new ListNode(1);pre->next = node;}}else//p2不为空{pre->next = p2;while (p2){sum = p2->val + add;p2->val = sum % 10;add = sum / 10;pre = p2;p2 = p2->next;}if (add){ListNode* node = new ListNode(1);pre->next = node;}}return l1;    }};



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 职称年审过期了怎么办 嘉兴驾模预约怎么办 电大考试去不了怎么办 负债高怎么办房贷 宁波鄞州银行卡怎么办 硕士学位实验数据不好怎么办 小区外过车很吵怎么办 建筑物初级消防证书怎么办 毕业答辩去不了怎么办 卡波西水痘样疹怎么办 58企业认证失败怎么办 炸鸡店没生意怎么办 你好漂亮重名了怎么办 医保卡被冒用怎么办 理财钱被骗走怎么办 个体户怎么办三方协议 社保户籍错了怎么办 身份证号码变更后驾驶证怎么办 公司倒闭欠工资怎么办 海南买房要社保怎么办? 工商核名不过怎么办 税局要求查账怎么办 完税凭证丢了怎么办 开票开错了怎么办 上海居住证搬家了怎么办 上海无户口 医保怎么办 淘宝账号注销不了怎么办 淘宝账号被覆盖怎么办 淘宝号注册不了怎么办 appleid密码忘了怎么办 蘑菇街用白富美后忘记账号怎么办 不知道宽带账号怎么办 上网用户名忘了怎么办 别人借淘宝号怎么办 不知道ipad密码怎么办 捡的ipad密码怎么办 12306注册名已存在怎么办 忘记网银用户名怎么办 登录用户名忘了怎么办 网银登录错误怎么办 路由器账号忘了怎么办