lintcode翻转链表

翻转链表 

翻转一个链表

样例

给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

挑战 
标签 
相关题目 
分析:使用额外两指针方法,只用遍历一次链表即可,且额外控件也需要较少,下面上代码

class Solution {
public:
    /*
     * @param head: n
     * @return: The new head of reversed linked list.
     */
     public:
    ListNode * reverse(ListNode * head) {
        // write your code here
        if(head==NULL)//不往下走节省时间
        return NULL;
            ListNode *pre=NULL;
            ListNode *Next=NULL;
            while(head)
            {
                Next=head->next;//将当前节点后的结点保存下来
                head->next=pre;//连接之前已反转结点
                pre=head;//把连接好的节点头部赋给pre
                head=Next;//把保存的结点赋给head以便下一次反转
            }
            return pre;
    }
};

Accepted

总耗时:  932 ms
100% 数据通过测试.
还没解决的相关题目 166. 链表倒数第n个节点 174. 删除链表中倒数第n个节点 96. 链表划分 165. 合并两个排序链表 112. 删除排序链表中的重复元素
太牛了,把AC的喜悦分享给你的朋友吧!


你可能感兴趣的:(数据结构,算法,C/C++算法,lintcode)