判断链表是否带环?若带环求环的长度?若带环求环的入口点?并计算以上每个问题的时间复杂度?
来源:互联网 发布:网络用语开屏 编辑:程序博客网 时间:2024/06/06 02:09
1、怎么判断一个单链表是否带环
如果单链表带环,那么从链表头开始时遍历就会进入死循环。可以用两个速度不同的指针,先让两个指针pFast和pSlow同时指向pHead,然后每次使pFast走两步,使pSlow走一步,只要链表带环,那么pFast和pSlow总会相遇。
// 判断链表是否带环,若带环给出相遇点PNode HasCircle(PNode pHead){PNode pFast = NULL;PNode pSlow = NULL;if(pHead == NULL)return NULL;pFast = pHead;pSlow = pHead;while(pFast && pFast->_pNext){pFast = pFast->_pNext->_pNext;pSlow = pSlow->_pNext;if(pFast == pSlow)return pFast;}return NULL;}
2、如果带环,环的长度怎么计算:
我们可以得到pFast和pSlow的第一次相遇点,把它标记起来,给一个计数器count,让它初始为1,然后让临时指针pCur向后走,每走一次count+1,等到它们再次相遇的时候,得到的count就是环的长度。
// 求环的长度size_t GetCircleLen(PNode pMeetNode){size_t count = 1;PNode pCurNode = NULL;if(pMeetNode == NULL)return 0;pCurNode = pMeetNode->_pNext;while(pCurNode != pMeetNode){pCurNode = pCurNode->_pNext;count++;}return count;}
3、如果带环,怎么求环的入口:
得到第一次相遇点pMeetNode后 ,分别在表头和相遇点放一个指针,两个指针每次都向后走一步,下一次相遇的点就是环的入口点。
// 求环的入口点PNode GetEnterNode(PNode pHead, PNode pMeetNode){if(pHead == NULL || pMeetNode == NULL)return NULL;while(pHead != pMeetNode){pHead = pHead->_pNext;pMeetNode = pMeetNode->_pNext;}return pHead;}
阅读全文
0 0
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?并计算以上每个问题的时间复杂度?
- 判断链表是否带环?若带环求环的长度?求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- -判断链表是否带环?若带环求环的长度?若带环求环的入口点
- 剑指offer--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 链表--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环,若带环求环的长度,若带环求环的入口点
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断单链表是否带环,若带环,求环的长度,求环的入口点
- 判断单链表是否带环? 若带环, 求环的长度? 求环的入口点?
- 判断单链表是否带环? 若带环, 求环的长度? 求环的入口点?
- 判断单链表是否带环?若带环,求环的长度?求环的入口点?
- 判断单链表是否带环?若带环,求环的长度?求环的入口点?
- 判断单链表是否带环?若带环,求环的长度,求环的入口点
- 链表面试题之判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- serialVersionUID 的使用
- 安装AndroidStudio2.3.3
- 知乎校招面经,拿到offer
- Android 6.0 运行时权限处理完全解析
- IntelliJ IDE中无法运行java程序
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?并计算以上每个问题的时间复杂度?
- 基础总结
- mysql 多表查询
- CornerStone的使用
- C#显示与隐式转换操作符
- javascript创建对象的几种方式?
- Windows pycharm下如何安装anaconda(python科学计算库)
- DevOps Jenkins持续集成GitHub代码通过SSH实现构建部署
- 手游摇杆(二)八方向摇杆和移动范围限制