1.带头结点
//带头结点
void Reverse(SLink *&L){
//用指针p遍历,r为p的后继
SLink *p,*r;
p=L->next;
L->next=NULL;
//遍历链表
while(p!=NULL){
//用r暂存p的后继
r=p->next;
//用头插法创建新链表实现逆置
p->next=L->next;
L->next=p;
//更新p
p=r;
}
}
2.不带头结点
//不带头结点
void Reverse(SLink *&L){
//用指针p遍历,r为p的后继
SLink *p,*r;
p=L;
r=p->next;
L->next=NULL;
//遍历链表
while(p!=NULL){
p=r;//向后遍历
r=p->next;
p->next=L;//实现逆置核心
L=P;//移动头指针
}
}