题目:给定一个链表,编写一个函数返回该链表的中间点
分析:在链表的处理过程中,使用两个链表指针,可达到很好的处理效果。例如在本题中,使用两个链表指针runner和chaser,其中runner一次行走两步,chaser一次前进一步,当runner到链表尾部时,chaser正好到链表的中间
参考答案:(没有写主函数)
#include "stdafx.h"
#include<iostream>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
};
ListNode *midpoint(ListNode *head)
{
ListNode *runner=head,*chaser=head;
if(head==NULL) return NULL;
while(runner->next&&runner->next->next)
{
chaser=chaser->next;
runner=runner->next->next;
}
return chaser;
}