liruby
2019-12-01 19:37
采纳率: 50%
浏览 929

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • leibuyu 2019-12-01 23:33
    已采纳

    /*从前向后,依次删除结点,并将删除的结点插入到头结点之后 此代码仅描述算法,其他自己打磨去吧 ,
    算法过程,删除第二个结点,放在第一个结点和头结点之间,然后删除第三个元素,放在头结点之后,即在原先第二个结点之前,直到最后一个元素被挪到头结点和第n-1个元素之间*/
    p=h->next; //第一个结点
    while(p->next){

    q=p->next; //用q记录要删除的结点

    p->next=q->next; //删除结点
    q->next=h->next;
    h->next=q; //插入到头结点之后

    }

    点赞 打赏 评论
  • blownewbee 2019-12-01 23:43
    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

    点赞 3 打赏 评论

相关推荐 更多相似问题