将单链表反转

// 将列表反转

public static void reverseList(HeroNodeItem head) {

  // 如果单链表为空,或者只有一个节点,不需要反转

  if(head.next == null || head.next.next == null) {

    return;

  }

  // 定义一个辅助变量cur,指向当前节点

  HeroNodeItem cur = head.next;

  // 用于指向当前节点的下一个节点

  HeroNodeItem next = null;

  // 定义一个空的头节点

  HeroNodeItem reverseHead = new HeroNodeItem(0, "", "");

  // 遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead的最前端

  while(cur != null) {

    // 保存当前节点的下一个节点

    next = cur.next;

    // 将cur的下一个节点指向新链表的最前端

    cur.next = reverseHead.next;

    reverseHead.next = cur;

   

    // cur后移

    cur = next;

  }

  // 将head.next指向reverseHead.next,实现单链表反转

  head.next = reverseHead.next;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容