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;
        }
    };        
  • 相关阅读:
    docker 镜像导入导出[转]
    部署coredns
    构建docker私有库
    怎么安装Docker CE 17( Centos 7)
    [转]使用tcpdump抓取HTTP包
    VLOOKUP函数使用
    有趣:256个class选择器可以干掉1个id选择器——张鑫旭
    算警示吧——此文来自张鑫旭(说说CSS学习中的瓶颈)
    不使用JavaScript让IE浏览器支持HTML5元素——张鑫旭
    CSS中width和height与盒子模型的关系
  • 原文地址:https://www.cnblogs.com/lsyyy/p/15236781.html
Copyright © 2011-2022 走看看