大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 单链表的就地逆转

单链表的就地逆转

关键词:单链表就地逆转单链表的就地逆转  阅读(733) 赞(12)

[摘要]本文主要是对单链表的就地逆转的讲解,希望对大家学习单链表的就地逆转有所帮助。

  线性链表就地逆转函数,用"砍头"法。

  砍断头结点后,在头结点和Head指针的中间不断插入链表的结点,从而达到链表逆转的目的

  

  链表的就地逆转:

  //线性链表就地逆转函数,用"砍头"法

  //砍断头结点后,在头结点和Head指针的中间不断插入链表的结点,从而达到链表逆转的目的

  void Reverse(LList *Head)

  {

  LList *PL1,*PLn,*Tmp;

  PL1=Head->next;

  PLn=PL1->next;//先保存头结点后面一个结点的指针,不然头结点砍断后将丢失后面的结点

  PL1->next=NULL;//砍断第一个结点,也就是头结点

  while(PLn)

  {

  Tmp=PLn->next;//用Tmp保存当前结点的next结点的指针,确保砍断当前结点后丢失后面的结点。

  PLn->next=PL1;

  Head->next=PLn;

  PL1=PLn;//PLn成为下一个结点的next指针的指向目标

  PLn=Tmp;//PLn变成需要插入的结点的指针了

  }

  }



相关评论