利用快慢指针寻找链表的中间结点
基本思路:设置两个指针开始都指向头节点,然后让一个结点以步长为1一个步长为2当步长为2的指针走向终点时步长为1的结点正好走到中间位置(如果为结点为偶数则指向中间偏右)
代码实现:
ListNode* middleNode(ListNode* head) {
//使用快慢指针法找链表的中间结点 其中p为慢q为快
ListNode *p,*q;
p=q=head;
while(q && q->next){
p=p->next;
q=q->next->next;
}
return p;
}