题解 | #链表相加(二)#

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head1 ListNode类 
 * @param head2 ListNode类 
 * @return ListNode类
 */
 #include <stdio.h>
struct ListNode* reverse(struct ListNode* head)
 {
    struct ListNode* pre,*cur,*nex;
    pre=NULL;
    cur=head;
    while(cur)
    {
        nex=cur->next;
        cur->next=pre;
        pre=cur;
        cur=nex;
    }
    return pre;
 }

struct ListNode* addInList(struct ListNode* head1, struct ListNode* head2 ) {
    // write code here
  	//翻转
    if(head1==NULL) return head2;
    if(head2==NULL) return head1;
    struct ListNode* pre1=reverse(head1);
    struct ListNode* pre2=reverse(head2);

    struct ListNode* H=(struct ListNode* )malloc(sizeof(struct ListNode* ));
    struct ListNode* pi=H;
    int value;
    int flag=0;
  //求和
    while(pre1 && pre2)
    {
        struct ListNode* node=(struct ListNode* )malloc(sizeof(struct ListNode* ));
        value=pre1->val+pre2->val;
        node->val=value;
        pi->next=node;
        pi=pi->next;
        
        pre1=pre1->next;
        pre2=pre2->next;
    }
    pi->next=pre1==NULL?pre2:pre1;
    struct ListNode* pre=H;
    struct ListNode* cur=pre->next;
//取值+进位
    while(cur)
    {
        value=cur->val;  
        cur->val=(value+flag)%10;
        flag=(value+flag)/10;
        cur=cur->next;
        pre=pre->next;
	  //还有最高位
        if(cur==NULL && flag)
        {
            struct ListNode* node=(struct ListNode* )malloc(sizeof(struct ListNode* ));
            node->val=flag;
            node->next=cur;
            pre->next=node;
        }
    }
//翻转
    struct ListNode* p=reverse(H->next);
    return p;


}
//搞清楚遍历指针指向的是什么,以及在后面加节点是直接接在遍历指针后面还是插在遍历指针前面,还是遍历指针后面有个null,插在遍历指针和null中间。
//当遍历指针本身就等于null,想要赋值,就不能pi-val,得新建新结点赋值,然后插入到遍历指针前面
//碎碎念,仅自己思考

#我的求职思考#
全部评论

相关推荐

服软a:才7.5,以为谁考不到啊,填750
点赞 评论 收藏
分享
09-27 10:54
重庆大学 C++
人已微死:致敬传奇耐测王。
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务