链表头插法易错


class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(!head)return NULL;
        ListNode* pre=new ListNode(-1);
        ListNode* tmp;
        while(head){
            tmp=head;
            head=head->next;
            tmp->next=pre->next;
            pre->next=tmp; 
        }
        return tmp;
    }
};

tmp=head其实二者都是指向同一节点的指针,并没有创建
指针的备份,需要对这一节点做出保护!!!!