#include<iostream>
using namespace std;
struct ListNode
{
int value;
struct ListNode * next;
ListNode(int v = 0) :value(v), next(nullptr){}
};
//判断是否有环,如果有环,返回环内节点;如果没有环,则返回nullptr
ListNode * IsLoop(ListNode * head)
{
if (head == nullptr || head->next == nullptr)
return nullptr;
ListNode * slow = head;
ListNode* fast = head->next;
while (fast!=nullptr&&slow!=fast)
{
slow = slow->next;
fast = fast->next;
if (fast != nullptr)
{
fast = fast->next;
}
}
return fast;
}
//计算环内长度
int LoopLenght(ListNode * head)
{
ListNode * stop = head;
head = head->next;
int count = 1;
while (head!=stop)
{
count++;
head = head->next;
}
return count;
}
//获得环的入口结点
ListNode* EntryLoop(ListNode * head,int length)
{
if (head==nullptr || length==0)
{
return nullptr;
}
L
判断两个链表是否有公共节点
最新推荐文章于 2021-07-21 23:28:49 发布