【数据结构】单链表—判断一个链表是否形成了环形结构 — 快慢指
发布时间:2020-12-15 05:57:48 所属栏目:安全 来源:网络整理
导读:题目:判断一个链表是否形成了环形结构? 思路:定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步,如果走的快的指针追上走的慢的指针,那么链表就是环形链表,如果走的快的指针走到了链表的末尾都没有追上第一个指针,那么
题目:判断一个链表是否形成了环形结构? 代码如下: template<class T>
struct ListNode
{
T _value;
ListNode<T>* _next;
ListNode(const T& value)
:_value(value),_next(NULL)
{}
};
template<class T>
class List
{
public:
List()
:_head(NULL)
{}
bool PushBack();
bool IsRing()//判断一个链表是否为环形,快慢指针
{
ListNode<T>* fast = _head;
ListNode<T>* slow = _head;
while(fast != NULL)
{
slow = slow->_next;
fast = fast->_next->_next;
if(slow == fast)
return true;
}
return false;
}
private:
ListNode<T>* _head;
};
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |