判断链表是否带环,以及环的入口
来源:互联网 发布:怎么提升淘宝等级 编辑:程序博客网 时间:2024/06/05 08:08
给出一个链表,先判断链表是否带环,如果带环,求出环的入口。
判断是否带环:用快慢指针。快指针每走两步,慢指针走一步,如果两者在某个点处相
遇,则链表带环。
下边给出函数的实现代码:
typedef struct LinkNode{DataType data;struct LinkNode *next;}LinkNode,*pLinkNode;typedef struct LinkList{LinkNode *pHead;}LinkList,*pLinkList;pLinkNode isCircle(pLinkList plist){assert(plist);if (NULL == plist->pHead){printf("链表为空\n");return NULL;}pLinkNode fast = plist->pHead;pLinkNode slow = plist->pHead;while (fast && fast->next){fast = fast->next->next;slow = slow->next;if (fast == slow)return fast;}return NULL;}
如果
如果链表带环,看下边的图:
代码:
pLinkNode firstCrossNode(pLinkList plist){assert(plist);if (NULL == plist->pHead){printf("链表是空\n");return NULL;}pLinkNode ret = isCircle(plist);if (ret == NULL){printf("链表不带环\n");return NULL;}pLinkNode fast = plist->pHead;pLinkNode slow = ret;while (fast){fast = fast->next;slow = slow->next;if (fast == slow)return fast;}}
阅读全文
0 0
- 判断链表是否带环,以及环的入口
- 判断链表是否带环,以及环的入口
- 判断链表是否带环?若带环求环的长度?求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- -判断链表是否带环?若带环求环的长度?若带环求环的入口点
- 剑指offer--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 链表--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环,若带环求环的长度,若带环求环的入口点
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?并计算以上每个问题的时间复杂度?
- 链表面试题之判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 剑指offer 15---判断链表是否带环?若带环求环的长度?若带环求环的入口点?
- 判断单链表是否带环,环的入口位置?
- 链表 是否带环,环的长度以及入口点
- 链表面试题----判断一个单链表是否带环,若带环,求入口点和环的长度
- 线程的两种方法
- ubuntu apt软件包管理工具
- 02. 优先队列-二叉堆(Binary Heap)
- 经典CNN之:VGGNet
- 自然排序和自定义排序演示
- 判断链表是否带环,以及环的入口
- Java你该知道的——Object类和包装类中常见的方法
- 运行setup.py时出现no commands supplied 错误
- 人工智能人才去哪儿“挖”?【智库2861】
- NKOJ3959 天真的因数分解(二分答案,容斥原理,莫比乌斯函数)
- 03. 左式堆(Leftist Heap)
- 暑假小集训
- linux启动分析——init进程与app启动
- 04. 斜堆(Skew Heap)