zoukankan      html  css  js  c++  java
  • [LeetCode] 2. Add Two Numbers

    #include <stdlib.h>
    #include <stdio.h>
    
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    
    struct ListNode {
         int val;
         struct ListNode *next;
    };
    
    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
    
        int debug = 0;
    
        struct ListNode* cur1 = l1;
        struct ListNode* cur2 = l2;
        struct ListNode* l3 = malloc(sizeof(struct ListNode));
        l3->val = 0;
        l3->next = NULL;
        struct ListNode* tmp = l3;
        struct ListNode* cur3 = l3;
    
        int v1 = 0, v2 = 0, v3 = 0;
        int carry = 0, first = 1;
        while(cur1 != NULL || cur2 != NULL) {
            v1 = (cur1 == NULL ? 0 : cur1->val);
            v2 = (cur2 == NULL ? 0 : cur2->val);
            v3 = v1 + v2;
            
            if (carry == 1) {
                v3 += 1;
                carry = 0;
            }
            if(v3 > 9) {
                carry = 1;
                v3 -= 10;
            }
            tmp = malloc(sizeof(struct ListNode));
            tmp->val = v3;
            tmp->next = NULL;
            if(first == 1) {
                l3 = tmp;
                cur3 = l3;
                first = 0;
                if (debug == 1) printf("tmp->val = %d
    ", tmp->val);
            } else {
                cur3->next = tmp;
                cur3 = cur3->next;
                if (debug == 1) printf("tmp->val = %d
    ", tmp->val);
            }
            if (debug == 1) printf("v1 = %d, v2 = %d, v3 = %d
    ", v1, v2, v3);
            if (cur1 != NULL) cur1 = cur1->next;
            if (cur2 != NULL) cur2 = cur2->next;
        }
    
        if (carry == 1) {
            tmp = malloc(sizeof(struct ListNode));
            tmp->val = 1;
            tmp->next = NULL;
            cur3->next = tmp;
            carry = 0;
        }
    
        return l3;
    }
    
    int main() {
        struct ListNode* l1 = malloc(sizeof(struct ListNode));
        struct ListNode* l2 = malloc(sizeof(struct ListNode));
        struct ListNode* l3 = malloc(sizeof(struct ListNode));
        struct ListNode* tmp1 = malloc(sizeof(struct ListNode));
        struct ListNode* tmp2 = malloc(sizeof(struct ListNode));
        struct ListNode* tmp3 = malloc(sizeof(struct ListNode));
    
        // tmp3->val = 3;
        // tmp3->next = NULL;
        // tmp2->val = 4;
        // tmp2->next = tmp3;
        // tmp1->val = 2;
        // tmp1->next = tmp2;
        tmp2->val = 8;
        tmp2->next = NULL;
        tmp1->val = 1;
        tmp1->next = tmp2;
        l1 = tmp1;
    
        tmp1 = malloc(sizeof(struct ListNode));
        tmp2 = malloc(sizeof(struct ListNode));
        tmp3 = malloc(sizeof(struct ListNode));
    
        // tmp3->val = 4;
        // tmp3->next = NULL;
        // tmp2->val = 6;
        // tmp2->next = tmp3;
        // tmp1->val = 5;
        // tmp1->next = tmp2;
        tmp1->val = 0;
        tmp1->next = NULL;
        l2 = tmp1;
    
        l3 = addTwoNumbers(l1, l2);
        printf("%d", l3->val);
        while(l3->next != NULL) {
            l3 = l3->next;
            printf(" -> %d", l3->val);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    GDI绘制时钟效果,与系统时间保持同步,基于Winform
    Asp.Net Core API网关Ocelot
    Docker打包 Asp.Net Core应用,在CentOS上运行
    【C#】数据库脚本生成工具(二)
    【C#附源码】数据库文档生成工具支持(Excel+Htm)
    微信小程序初使心得【微信小程序快速入门】
    论:开发者信仰之“天下IT是一家“(Java .NET篇)
    线程池,千万注意,原来很多人都在错用
    .NET跨平台之运行与Linux上的Jexus服务器
    StackExchange.Redis 之 SortedSet 类型示例
  • 原文地址:https://www.cnblogs.com/skyssky/p/5740400.html
Copyright © 2011-2022 走看看