带头结点的单链表反转算法

// 带头结点的单链表反转算法
LinkList LinkList_Reverse( LinkList L )
{
    //用p记录后一个节点、q来记录中间,用r来记录前一个节点。
    LNode *p, *q, *r;
    if( !L || !L->next || !L->next->next )
    {
        return L;
    }
    p = L->next;
    q = p->next;
    p->next = NULL; 
    while( q )
    {
        r = q->next;
        q->next = p;
        p = q;
        q = r;
    }
    L->next = p;
    return L;
}

 

你可能感兴趣的:(数据结构,算法)