美文网首页
面试题16:反转链表

面试题16:反转链表

作者: Kitlen | 来源:发表于2020-04-12 10:54 被阅读0次

题目:

定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。

思路:

定义三个指针,分别指向当前遍历的结点pNode、它的前一个结点pPrev、它的后一个结点pNext。
1)为避免链表断开,每次遍历,先保存后一个结点pNext。如果pNext==null,证明当前结点pNode是最后一个结点,即反转链表的头节点。
2)将当前结点pNode的next指向它的前一个结点pPrev。
3)所有指针后移一位。

自述(仅自己理解):循环过程中,如果判断条件不被判断块使用,同时仅在非判断块中起作用并且非判断块的代码和判断块的代码冗余,那么判断条件无用。

  • 举例:在while条件中,我使用了pNode != null的判断条件,是因为在条件块中使用了ListNode pNext = pNode.next;
    如果我在while判断使用pNode.next != null,那么条件块没有使用到该判断,而且非条件块还需要写一段冗余代码。证明此判断条件不够精准,还需提炼。

解答:

class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode pReverseHead = null;
        //三个指针:前面一位,当前,下一个指针
        ListNode pPrev = null;
        ListNode pNode = head;
        while (pNode != null) {
            //保存第三个指针
            ListNode pNext = pNode.next;
            if (pNext == null) {
                pReverseHead = pNode;
            }
            //反转指针指向
            pNode.next = pPrev;
            //向后移动位置
            pPrev = pNode;
            pNode = pNext;
        }
        return pReverseHead;
    }
}

相关文章

  • 剑指offer目录

    目录 面试题3 在二维数组中查找 面试题15 链表中倒数第K个数 面试题16 反转链表 面试题44 扑克牌的顺子

  • 面试题16 反转链表

    题目链接:面试题16 反转链表 我的思路 反转链表的基本思路就是把指向后驱的指针指向前驱 如果把指针的指向改变,无...

  • 反转链表

    《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。 思路:反转链表就是将链表中每一个节点的...

  • 数据结构之 swift 实现链表反转

    链表反转很熟悉的面试题,关于链表的基础知识就不再累赘了,如何swift实现链表的反转。 传入链表的头结点 返回一个...

  • 链表的反转

    反转链表是一道很基本的面试题,通过更改节点之间的链接来反转链表。 1.单链表的反转 题目 示例 用一幅图来解释:这...

  • 1.数据结构-链表问题

    链表相关问题 删除节点 链表去重 有环链表 反转链表 链表排序 链表相交 其他问题 面试题 02.03. 删除中间...

  • 面试题16:反转链表

    题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点 递归算法: 1.找到最后一个节点和倒...

  • 面试题16:反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素。 代码实现 主要思路 1、首先我们需要3个结点,第一个是当...

  • 面试题16:反转链表

    题目: 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思路: 定义三个指针,分别指向当...

  • 剑指offer 15~17

    15.反转链表输入一个链表,反转链表后,输出链表的所有元素。 16.合并两个排序的链表输入两个单调递增的链表,输出...

网友评论

      本文标题:面试题16:反转链表

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