头插法原地逆转链表
根据头插法特性,将原来链表断开,重新使用头插法,新建
//头插法逆转链表
LinkList Reverse_List(LinkList L)
{
LNode *p,*r;
p=L->next;
L->next=NULL;//将L置空,重新开始
while(p!=NULL)
{
r=p->next;
p->next=L->next;
L->next=p;
p=r;
}
return L;
}
指针逆转
使用pre,p,r 其中p表示当前结点,pre表示前一个结点,r表示后一个结点,每次p->next=pre,这样就可以逆转
//指针逆转
LinkList Reverse_List2(LinkList L)
{
LNode *pre,*p=L->next,*r=p->next;//p每次指向,应该逆转指针的结点
//pre为p提供前驱结点,r用来暂存p的一下个结点
p->next=NULL;//原链表初结点,为新链表的尾结点
while(r!=NULL)