链表:反转链表

  • 需求理解
    • a->b->c->d->null
    • 链表节点数据结构
    • ListNode{
        String a ;
        ListNode next;      
      }
    • 反转链表就是改变每个节点的next指向的引用

  • 思路
    • 遍历链表节点,每个节点指针指向前一个节点:需要一个临时变量存储上一个节点的引用
  • code
  • package club.interview.linkedList;
    
    import club.interview.linkedList.base.ListNode;
    
    /**
     * 1. 逆序打印链表 - 建议使用栈(不改变链表)
     * 2. 反转链表 - 使用双指针(不使用额外空间)
     * 双指针,思路要记住  https://leetcode-cn.com/problems/reverse-linked-list/
     * 

    * null -> 1 -> 2 -> 3 -> 4 * * @author QuCheng on 2020/4/6. */ public class Reverse { private ListNode reverse(ListNode listNode) { // 双指针,转换思路一定要理清 ListNode result = null; while (listNode != null) { // 临时保存next ListNode next = listNode.next; // 反转当前节点的next listNode.next = result; // 完成当前节点的替换 result = listNode; // 准备下一个节点 listNode = next; } return result; } }

     

      

你可能感兴趣的:(链表:反转链表)