【剑指offer】反转链表

反转链表

http://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca

题目描述
输入一个链表,反转链表后,输出新链表的表头。
1、思路分析
为保证思路的完整性,一开始需考虑特殊情况,即链表结点为空或者只有头结点的时候,直接返回链表本身。初始思路我想用三个指针分别前一个、当前和下一个结点,其实通过移动head可以充当当前指针,因此我们再另外新建pre、next两个指针即可。再在while循环中交换三个指针指向的下一个指针位置,这与交换两个数字的思路比较像,需要预先存储即将被改变的,以免被覆盖。最后返回pre指针即可。
2、代码

public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode pre = null;
        ListNode next = null;
        while(head != null) {
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
        return pre;
    }
}
全部评论

相关推荐

Java面试先知:我也是和你一样的情况,hr 说等开奖就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务