• C day 2


    leetcode:Add Two Numbers


    2019-04-04  20:26:28 

    You are given two non-empty linked lists representing two non-negative integers. 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.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    Example:

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807

    我的代码:
    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
            struct ListNode *p, *q;
        p = (struct ListNode *)malloc(sizeof(struct ListNode));
        q = (struct ListNode*)malloc(sizeof(struct ListNode));
        p = l1->next;
        q = l2->next;
        struct ListNode *L3 = (struct ListNode*)malloc(sizeof(struct ListNode));
        struct ListNode *m = L3;
        int tag = 0;//表示进位
        while (q != NULL && p != NULL) {
            struct ListNode *n = (struct ListNode*)malloc(sizeof(struct ListNode));
            n->val = p->val + q->val+tag;
            if (n->val > 9) {
                tag = n->val / 10;
                n->val = n->val % 10;
            }
            n->next = NULL;
            m->next = n;
            m = m->next;
            q = q->next;
            p = p->next;
        }
        struct ListNode  *p1;
        p1= (struct ListNode *)malloc(sizeof(struct ListNode));
        p1->next = NULL;
        p1 = L3->next;
        return p1;
    }

    在自己的vs里面调试什么的都没有问题,但是一在leetcode的运行环境中就不行了。

    Line 70: Char 15: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'struct ListNode', which requires 8 byte alignment (ListNode.c) 0xbebebebebebebebe: note: pointer points here <memory cannot be printed>

    弄过了很久也没有弄出来。(果断去参考大佬的了)

    int x,y;
        int sum=0;
        int c=0;
        
        struct ListNode* head;
        struct ListNode* ptr;
        head=(struct ListNode*)malloc(sizeof(struct ListNode));
        x=l1->val;
        y=l2->val;
        head->val=(x+y)%10;
        c=(x+y)/10;
        l1=l1->next;
        l2=l2->next;
        ptr=head;
        
        while(l1 || l2)
        {
            x=0;
            y=0;
            if(l1)
            {
                x=l1->val;
                l1=l1->next; 
            }
            
            if(l2)
            {
                y=l2->val;
                l2=l2->next;
            }
            
            sum=x+y;
            ptr->next=(struct ListNode*)malloc(sizeof(struct ListNode));
            ptr=ptr->next;
            ptr->val=(sum+c)%10;
            c=(sum+c)/10;   
        }
        if(c)
        {
            ptr->next=(struct ListNode*)malloc(sizeof(struct ListNode)); 
            ptr=ptr->next;
            ptr->val=c;
        }
        ptr->next=NULL;
    
        return head; 

    ok,good day~

  • 相关阅读:
    redis 配置文件说明
    Python 详解命令行解析
    Python 的字符编码
    pt-online-schema-change utf8mb4 错误解决方法【转】
    [MySQL 5.6] Innodb新特性之export/import 表文件
    查找数据库大小和表大小
    MySQL 增删列
    使用MySQL Shell创建MGR
    Qingcloud_MySQL Plus(Xenon) 高可用搭建实验
    MySQL事务提交流程
  • 原文地址:https://www.cnblogs.com/sece/p/10656948.html
Copyright © 2020-2023  润新知