Reverse a singly linked list.
A linked list can be reversed either iteratively or recursively. Could you implement both?
Subscribe to see which companies asked this question
分析:
利用三个指针,pre,cur,next,遍历链表,遍历的过程改变他们的指向
pre的作用,cur指针所要反指回来的节点
cur的作用,操作当前节点进行逆置
next的作用,始终先跑到下一个将要逆置的节点位置
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==NULL)
            return head;
        //初始化
        ListNode* pPreNode=head;
        ListNode* pCurNode=head->next;
        pPreNode->next=NULL;
        ListNode* pNextNode=NULL;
        while(pCurNode!=NULL)
        {
            pNextNode = pCurNode->next; //准备下一个位置
            pCurNode->next = pPreNode;//逆置
            //pPreNode 和 pCurNode 后移一位 
            pPreNode = pCurNode; //cur变成前一个
            pCurNode = pNextNode;//next变为当前节点
        }
        head = pPreNode; //退出循环是只有pPreNode指针指向实体节点,另外两个已经为NULL
        return head;
    }
};注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50531851
原作者博客:http://blog.csdn.net/ebowtang
<LeetCode OJ> 206. Reverse Linked List
原文:http://blog.csdn.net/ebowtang/article/details/50531851