编写一个函数实现单向链表的逆置,单向链表的遍历我不太懂,不明白怎么实现全表数据逆置
/*从前向后,依次删除结点,并将删除的结点插入到头结点之后 此代码仅描述算法,其他自己打磨去吧 ,
算法过程,删除第二个结点,放在第一个结点和头结点之间,然后删除第三个元素,放在头结点之后,即在原先第二个结点之前,直到最后一个元素被挪到头结点和第n-1个元素之间*/
p=h->next; //第一个结点
while(p->next){
q=p->next; //用q记录要删除的结点
p->next=q->next; //删除结点
q->next=h->next;
h->next=q; //插入到头结点之后
}
LinkList Reverse (LinkList L)
{
LNode *p,*r;//p为工作指针,r为p的后继以防断链
p=L->next;//从第一个元素结点开始
L->next=NULL;//先将头结点L的next域置为NULL
while(p!=NULL)//依次将元素结点摘下
{
r=p->next;//暂存p的后继
p->next=L->next;//将p结点插入到头结点之后
L->next=p;
p=r;
}
return L;
}
Linklist reserve(LinkList L)
{
LNode *pre,*p=L->next,*r=p->next;
p->next=NULL;//处理第一个结点
while(r!=NULL)//r为空,则说明p为最后一个结点
{
pre=p;//依次遍历
p=r;
r=r->next;
p->next=pre;//指针反转
}
L->next=p;//处理最后一个结点
return L;
}