剑指offer--反转链表并打印

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead==NULL)
            return NULL;
        // 1.采用temp指针存一下头结点
        // 2.接着取出下一个节点后使用头插法就可以了
        // 3.temp接着取
        ListNode *ppre=NULL;   // 存的是待反转节点
        ListNode *temp=NULL;      
        while(pHead!=NULL){  
            temp=pHead->next;  // 存的头节点的下一个节点,因为只有一个节点的时候不用反转滴
            pHead->next=ppre; 
            ppre=pHead;   // 头插法插入
            pHead=temp;             
        }
        return ppre;
    }
};

你可能感兴趣的:(剑指offer--反转链表并打印)