剑指offer系列之14:反转链表

来源:互联网 发布:大学生支教后收获数据 编辑:程序博客网 时间:2024/05/19 12:14

题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出翻转后链表的头节点。

思路:在调整节点i的m_pNext指针时,除了需要知道节点i本身,还需要节点i的前一个节点h,因为需要把节点i的m_pNext指向节点h,同时还需要一个保存i的一个节点j,以防止链表断开,因此需要定义三个指针,分别指向当前遍历到的节点,它的前一个节点和后一个节点。

/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode ReverseList(ListNode head) {        if(head == null){            return null;        }        ListNode newHead = null;        ListNode pNode = head;        ListNode pPrev = null;        while(pNode != null){            ListNode pNext = pNode.next;            if(pNext == null){                newHead = pNode;            }            pNode.next = pPrev;            pPrev = pNode;            pNode = pNext;        }        return newHead;    }}
0 0
原创粉丝点击