【剑指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;
    }
}
全部评论

相关推荐

Aurora23:属于挂一半,暂时进池子了,隔一段时间没有其他组捞的话就彻底结束了
点赞 评论 收藏
分享
09-30 15:27
已编辑
成都工业学院 企业文化
Morpheus_:候选人:还需要测验武力值?
投递腾讯等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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