code-链表
leetcode合并两个有序链表
注意要引入头结点

leetcode-环形链表
用快慢指针,注意判断条件是快指针是否为空以及快指针的next是否为空,一开始还要判断整个链表是否为空或者是否只有一个节

leetcode-相交链表
自己写的代码过于繁杂,直接拿到长度差,进行遍历即可,长的先走,一开始要判断链表是否为空情况
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
{
ListNode *CommomNode = nullptr;
if(headA != nullptr && headB != nullptr)
{
int countA = 0;
int countB = 0;
ListNode *pNodeA = headA;
ListNode *pNodeB = headB;
while(pNodeA != nullptr)
{
countA++;
pNodeA = pNodeA->next;
}
while(pNodeB != nullptr)
{
countB++;
pNodeB = pNodeB->next;
}
//长的链表先走
pNodeA = headA;
pNodeB = headB;
int diff = abs(countA - countB);
if(countA > countB)
{
for(int i = 0;i < diff;i++)
{
pNodeA = pNodeA->next;
}
}
else if(countA < countB)
{
for(int i = 0;i < diff;i++)
{
pNodeB = pNodeB->next;
}
}
while(pNodeA!= nullptr && pNodeB != nullptr)
{
if(pNodeA == pNodeB)
{
CommomNode = pNodeA;
break;
}
pNodeA = pNodeA->next;
pNodeB = pNodeB->next;
}
}
return CommomNode;
}
leetcode-翻转链表
注意前后点的细节问题,思路问题不大

注意一开始对于cur的初始化,以及最后是返回cur还是pre,过程要理解


浙公网安备 33010602011771号