反转链表

《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。

思路:反转链表就是将链表中每一个节点的next指针域指向它的前一个节点,而当next指针域指向前一个节点之后,它的后一个节点就找不到了,所有在改变指向前需要先记录它的后一个节点。新链表的表头就是原链表的表尾。

代码如下:

public ListNode reverseList(ListNode head) {
    ListNode reverseHead = null;
    ListNode curNode = head;
    ListNode preNode = null;
    while (curNode != null) {
        // 记录当前节点的下一个节点
        ListNode nextNode = curNode.next;
        // 当前节点的下一个节点为空则当前节点为新链表的表头
        if (nextNode == null) {
            reverseHead = curNode;
        }
        curNode.next = preNode;
        preNode = curNode;
        curNode = nextNode;
    }
    return reverseHead;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容