本文主要是介绍剑指offer之面试题15-2:单链表是否有环,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
判断一个单链表是否形成了环形结构。
思路:首先,有环的定义是,链表的尾节点指向了链接中间的某个节点。比如下图,如果单链表有环,则在遍历时,在通过6之后,会重新回到3,这道题和求链表的倒数第k个结点一样,采用的思想都是定义两个指针,使两指针在遍历时以某种方式错开,最后看两个指针是否相等。错开方式有两种。
solution1:使用pHead、pBehind两个指针,pHead一直向前走,pBehind每次都从头开始走,对于每个结点,看pHead走的步数是否和pBehind一致。如pHead从6走到3,走了6步,而pBehind走了2步骤,步数不一致,说明有环。
代码如下:
/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }*
这篇关于剑指offer之面试题15-2:单链表是否有环的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!