编写一个函数,实现将一个带头结点的单向链表数据逆置,代码怎么写呀?

编写一个函数实现单向链表的逆置,单向链表的遍历我不太懂,不明白怎么实现全表数据逆置

/*从前向后,依次删除结点,并将删除的结点插入到头结点之后 此代码仅描述算法,其他自己打磨去吧 ,
算法过程,删除第二个结点,放在第一个结点和头结点之间,然后删除第三个元素,放在头结点之后,即在原先第二个结点之前,直到最后一个元素被挪到头结点和第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;
}

https://www.cnblogs.com/wyloving/p/8298925.html