给出一个单链表,不知道节点N的值,只遍历一次就可以求出中间节点,写出算法

解析:在处理链表问题时,”快行指针“(runner,或称第二个指针)是一种很常见的技巧。快行指针指的是同时用两个指针来迭代访问链表,只不过其中一个比另一个超前一些。

      设立两个指针,比如*p和*q。p每次移动两步,即 p = p->next->next,q每次移动一步,即 q = q->next。这样,当p到达最后一个节点时,q就是中间节点。

算法如下:

 1 void serchmid(node *head, node *mid)
 2 {
 3     node *temp = head;
 4     while(head->next->next != NULL)
 5     {
 6         head = head->next->next;
 7         temp = temp->next;
 8         mid = temp;
 9     }
10 }
原文地址:https://www.cnblogs.com/freeso/p/3978285.html