/*求链表的中间节点(利用快慢指针)*/
/*链表有奇数个节点时,中间节点只有一个;有偶数个节点时,结果为输出节点和它的下一个*/
struct list_head *find_mid(struct list_head *head)
{
struct list_head *slow, *fast;
slow = head;/*快慢指针都指向第一个节点*/
fast = head;
while (fast != NULL && fast->next != NULL && fast->next->next != NULL) {
slow = slow->next;/*慢指针每次走一步*/
fast = fast->next->next;/*快指针每次走两步*/
}
return slow;
}