已知带头结点的单链表,设计一个算法C函数,查找链表的中间结点并返回该结点的指针

已知带头结点的单链表,设计一个算法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;