// 带头结点的单链表反转算法 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; }