一、判断一个链表中是否有环,如果有环,返回环的最初节点。
例如:
输入:
输出:2
实现思想是先定义一个特定节点值的节点,依次断开节点与下一节点的连接,并将下一节点的指针指向该特定节点,如果存在环则必定会访问到这个特定的节点,否则指针为·NULL则遍历结束,不存在环。
具体代码如下:
ListNode *detectCycle(ListNode *head) {
if(head==NULL)
return head;
ListNode* loop=new ListNode(-1);
ListNode* res=NULL;
while(head&&head!=loop){
res=head;
ListNode* node=head->next;
head->next=loop;
head=node;
}
if(head==loop)
return res;
else
return NULL;
}