指针修习指南->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;
    }
};        

 

posted @ 2021-09-07 09:33  凉如水  阅读(40)  评论(0编辑  收藏  举报