首页 > 其他 > 详细

链式存储-快慢指针

时间:2021-04-12 12:39:19      阅读:30      评论:0      收藏:0      [点我收藏+]

快慢指针:

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

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

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

 

链式存储-快慢指针

原文:https://www.cnblogs.com/Yang-Xin-Yi/p/14647236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!