zoukankan      html  css  js  c++  java
  • 指针修习指南->Leetcode 2

    哈,朕又回来了!!!

    兜兜转转还是学了计算机专业~~~

    第一篇就从指针开始吧

    定义指针

    int *val;
    int* val;
    //数据类型 *指针名称
    //emmm *号位置不同

    初始化指针

    用&取址

    int *val=0;
    int *val=NULL;
    //此处的0即为NULL,而非数值
    //保证指针指向合法位置,否则很可能对计算机造成不可逆损害
    int *val=&value;

    指针与数组

    //数组名可以直接当做一种指针来使用
    取值操作
    //*数组名(+下标值) *a(+1)->a[1]; //*(&数组名[下标值]) *(&a[1])->a[1] //获取一维数组地址方式 //数据类型 *指针变量=数组名 int *val=a; //数据类型 *指针变量=&数组名[0] int val=&a[0];

     多维数组

    //设arr[5][3]
    *(arr+0)//表示数组中第一维维数0的第一个元素的地址,也就是arr[0][0]
    *(arr+0)//表示数组中第一维维数1的第一个元素的地址,也就是arr[1][0]
    以此类推
    
    如果想要获取arr[1][1]的内存地址,应该使用*(arr+1)+1
    //*运算符的优先级高于+运算符
    
    //因此如果想要获取arr[1][2]的值
    *((arr+1)+2);

    Leetcode 2

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode() : val(0), next(nullptr) {}
     *     ListNode(int x) : val(x), next(nullptr) {}
     *     ListNode(int x, ListNode *next) : val(x), next(next) {}
     * };
     */
    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
                ListNode l3;
        ListNode *p1=l1;
        ListNode *p2=l2;
        ListNode *p3=new ListNode(-1);//开一个链表地址
        ListNode *p4=p3; //记录指针3位置
        int len1=1,len2=1;
        
        while(p1->next!=NULL)
        {
            len1++;
            p1=p1->next;
        }//记录l1的长度
        
        while(p2->next!=NULL)
        {
            len2++;
            p2=p2->next;
        }//记录l2的长度
        
            //将长度不够的数组补0
        if(len2<len1)
        {
            for(;len2<len1;len2++)
            {
                p2->next=new ListNode(0);//新开地址
                p2=p2->next;//指向下一位
            }
        }
        else if(len1<len2)
        {
            for(;len1<len2;len1++)
            {
                p1->next=new ListNode(0);
                p1=p1->next;
            }
        }
        
        p1=l1;
        p2=l2;
        bool flag=0;
        int count=0;
        
        for(int i=1;i<=len1;i++)
        {
            count=p1->val+p2->val+flag;//计算个位累加
            if(count>9)
            {
                count=count-10;
                flag=1;//进1处理
            }
            else flag=0;
            p3->next=new ListNode(count);//新开地址存储
            
            p1=p1->next;
            p2=p2->next;
            p3=p3->next;
        }
        if(flag)
        p3->next=new ListNode(1);
        //谨防数据溢出
        return p4->next;
        }
    };        
  • 相关阅读:
    php date 时间差
    array_merge 和 + 号的的区别
    apache 添加https后导致http无法访问
    php 获取url
    TP5 事务处理
    LeetCode 每日一题 (盛最多水的容器)
    LeetCode 每日一题 (字符串转换整数 (atoi))
    LeetCode 每日一题(5. 最长回文子串)
    LeetCode 每日一题 (3 无重复字符的最长子串)
    LeetCode 每日一题 (两数相加)
  • 原文地址:https://www.cnblogs.com/lsyyy/p/15236781.html
Copyright © 2011-2022 走看看