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,过程要理解

 

 

 

 

 

 

posted @ 2020-05-06 10:27  我爱微风  阅读(125)  评论(0)    收藏  举报