已知带头结点的单链表,设计一个算法(C函数),查找链表的中间结点,并返回该结点的指针。
问题描述:
已知带头结点的单链表,设计一个算法(C函数),查找链表的中间结点,并返回该结点的指针。
答
node * GetCenterNode(node *l)
{//一次遍历求中间结点的值
node *p2 = l;//two step
node *p1 = l;//one step
while(1)
{
p2 = p2->next->next;
p1 = p1->next;
if(p2->next == NULL)//len %2 ==0
break;
if(p2->next->next == NULL)//len %2 == 1
{
p1 = p1->next;
break;
}
}
return p1;