//判断是否有环
bool isLoop(List plist)
{
Node *pf = plist;
Node *ps = plist;
while(pf != NULL && pf->next != NULL)
{
pf = pf->next->next;
ps = ps->next;
if(pf == ps)
{
break;
}
}
if(pf == NULL || pf->next == NULL)
{
return false;
}
else
{
return true;
}
}
//环的入口
Node *EnterNode(List plist)
{
Node *pf = plist;
Node *ps = plist;
while(pf != NULL && pf->next != NULL)
{
pf = pf->next->next;
ps = ps->next;
if(pf == ps)
{
break;
}
}
if(pf == NULL || pf->next == NULL)
{
return NULL;
}
ps = plist;
while(pf != ps)
{
pf = pf->next;
ps = ps->next;
}
if(pf == ps)
{
return ps;
}
return NULL;
}
int length(List ps)//求环长,传入ps为环的入口
{
int count=1;
Node *m=ps->next;
while(m!=ps)
{
m=m->next;
count++;
}
return count;
}
关于带环的链表操作
猜你喜欢
转载自blog.csdn.net/qq_41804181/article/details/81221231
今日推荐
周排行