美文网首页
单向链表-链表反转

单向链表-链表反转

作者: 今年花开正美 | 来源:发表于2020-05-25 22:51 被阅读0次

    最近在并行复习数据结构与算法的知识,为了加强掌握,就把做题思路用画图的方式记录下来。今天是第一篇,常见的问题:链表反转,题目就不再阐述了。

    实现思路

    链表反转.png

    大致说明:
    1.为了简化对边界的判断,加入了哨兵节点,哨兵节点固定,随着节点不断移动,哨兵节点的next时刻指向最新的头节点。
    2.实现的核心思路就是不断的移动初始头节点,将P节点的next节点设置为新的头节点,同时P节点的next节点指向原来的next的next节点。
    3.每次循环都将P节点的后一个节点放到头部节点,最终当P节点的next为null时,链表就已经完全反转了。
    4.最后,我们只要返回哨兵节点的next节点即可。

    实现代码

    public ListNode reverseList(ListNode head){
            if(null == head || null == head.next){
                return head;
            }
    
            ListNode P = head;
            //哨兵节点
            ListNode serHead = new ListNode(-1);
            serHead.next = head;
    
            while (P.next != null){
                ListNode temp = P.next;
                P.next = P.next.next;
                temp.next = serHead.next;
                serHead.next = temp;
            
            return serHead.next;
     }
    

    相关文章

      网友评论

          本文标题:单向链表-链表反转

          本文链接:https://www.haomeiwen.com/subject/iqcpahtx.html