链表:反转链表

Posted nightofstreet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表:反转链表相关的知识,希望对你有一定的参考价值。

  • 需求理解
    • 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/
     * <p>
     * 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;
        }
    
    }

     

      

以上是关于链表:反转链表的主要内容,如果未能解决你的问题,请参考以下文章

如何链表反转

反转链表

Offer[24] 反转链表

剑指Offer-反转链表

c语言,链表的反转,请写出代码,并讲解下,谢了!!!!!

代码的鲁棒性:反转链表