首页 > 其他 > 详细

单链表的反转

时间:2020-01-15 17:59:39      阅读:70      评论:0      收藏:0      [点我收藏+]

思路:

         1.定义一个新的链表;

         2.从头到尾遍历原来的链表,每遍历一个节点,将其取出,并且将其放在新的链表的最前端,也就是第一个有效结点;

         3.将原来的链表的head.next = 新的链表的head.next。

技术分享图片

 

 

 

 主要代码:

public  void reverSetList(){
      //如果链表为空或者链表只有一个元素,无需反转
      if(this.head.next == null || this.head.next.next == null){
          return;
      }
      //定义一个辅助变量,遍历原来的链表
      Node index = this.head.next;
      Node cur = null;  //指向当前节点[index]的下一个节点
      Node reverHead = new Node<E>((E)new Object(),null); //定义一个新的节点
      //遍历原来的链表
      while (index != null){
          cur = index.next;//暂时保存当前节点的下一个节点
          index.next = reverHead.next;  //将index的下一个节点指向新链表的最前端
          reverHead.next = index;
          index = cur; //index后移
      }
      this.head.next = reverHead.next;   //原来链表指向新的节点的最前端
  }

技术分享图片

单链表的反转

原文:https://www.cnblogs.com/128-cdy/p/12197869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!