就地逆置即算法的辅助空间为O(1)。思路为:使用指针p扫描原单链表,先将头结点L的next域设置为NULL变成一个空链表(提前已将L->next赋值到p),然后一次循环将*p节点采用头插法插入到L中即可,即实现了单链表的就地逆置。
void reverse (LinkList L)
{
LinkList *p=L->next,*q;
L->next=NULL;
while (p!=NULL)
{
q=p->next;
p->next=L->next;
L->next=p;
p=q;
}
}