链式存储-快慢指针

快慢指针:

定义两个指针,一个快,一个慢,可以有多种用途。例如:快速找到位置长度单链表中的中间结点;对于循环链表中利用快慢指针也可以判断是否存在环。

快速找到位置长度单链表中的中间结点:

1)使用一个指针,先索引一遍获取总长度,再取长度一半去循环获取到中间值;O(3L/2)。

2)使用两个指针,快指针和慢指针,快指针一次向前走2格,慢指针一次走一格,当快指针走完全程,慢指针正好走在中间;O(L/2)

解析:设立两个指针,*p,*q。p每次移动两个位置,即P=p->next->next,q每次移动一个位置即 q=q->nwxt.当p到达最后一个结点时,q就是中间结点了。

void searchMid(node *head, node *mid)
{
    node *temp = head;
    while (head->next->next != NULL)
    {
        head = head->next->next;
        temp = temp->next;
        mid = temp;
    }
}nex

 

posted @ 2021-04-12 11:28  YangXinYi  阅读(87)  评论(0编辑  收藏  举报
//color="150,150,150"粒子的颜色设置 opacity="1"粒子的透明度 count="100"粒子的个数