将带头结点的单链表逆置,空间复杂度O(1),即不产生新链表
LinkList Rev(LinkList L)//将链表所有元素逆置
{
LNode *p, *r;
p = L->next; //p保存了L头结点后的所有元素
L->next = NULL; //先将L置空
while (p)
{
r = p->next; //暂存p的后继
p->next = L->next;
L->next = p; //头插法,这是本算法关键
//每个结点依次都插入到头结点L后面,以发生逆转效果
p = r; //还原p
}
return L;
}