LeetCode 相交链表,适合刚学链表的新手

原题链接160. 相交链表 - 力扣(LeetCode)

之前学过链表,但是这是第一次写与链表有关的题,我会把比较基础的地方写详细一点

  struct ListNode {
      int val;
      ListNode *next;
      ListNode(int x) : val(x), next(NULL) {}

  };
//ListNode* p创建的是一个结构体指针,指向的是一个结构体, p = p->next访问结构体里的变量next,next里是下一个变量的地址
//p->next,下面的话简单来说,就是p访问结构体里变量的指针,->只能用于对结构体,访问他的成员,访问的对象是结构体里的成员
//具体来说, 表示获取指针 所指向节点的 成员,这个成员本身也是一个指针,通常指向链表中的下一个节点。
//因此,执行 实际上是更新指针 的值,

//使用 nullptr 可以避免在某些情况下出现空指针引起的问题。nullptr是一个空指针,避免null的某些问题
class Solution {
public:
    ListNode* getIntersectionNode(ListNode* headA, ListNode* headB) {
        unordered_set<ListNode*> s;
        for (ListNode* p = headA; p != nullptr; p=p->next)//p=p->next更新p指针指向的链表的节点
        {
            s.emplace(p);
       }
        for (ListNode* q=headB; q != nullptr; q=q->next)
        {
            if(s.find(q)!=s.end())
                return q;
        }
        return nullptr;
    }
};
struct ListNode {
      int val;
      ListNode *next;
      ListNode(int x) : val(x), next(NULL) {}

  };

这里的链表是用结构体来写的,ListNode* p创建的是结构体指针,p->next是访问结构体里的成员变量,不用像原来那样还要在后面加一个".",next里指向的是下一个节点的指针,p=p->next将下一个节点的地址赋给p指针

  ListNode(int x) : val(x), next(NULL) {}

  • ListNode(int x):这是构造函数的声明,它表明构造函数接受一个整数参数 。x
  • ::冒号后面的部分称为成员初始化列表,用于在创建对象时初始化成员变量。
  • val(x):这行代码表示将传入的参数 赋值给成员变量 。xval
  • next(NULL):这行代码表示将成员变量 初始化为 ,即空指针,意味着新创建的节点不指向任何其他节点,或者说它是链表的最后一个节点。nextNULL
  • {}:这是构造函数的函数体,由于没有额外的初始化工作需要完成,所以函数体是空的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值