Leetcode---Reverse Linked List

Reverse a singly linked list.

很简单的一道题,问题在于要避免翻转后链表尾部的环。


ListNode* reverseList(ListNode* head) {
    if(head==NULL)
        return NULL;
    ListNode * header=new ListNode(-1);
    ListNode * p0=header;
    ListNode * p1=head;
    p0->next=p1;
    while(p1!=NULL){
        ListNode * p2=p1->next;
        p1->next=p0;
        p0=p1;
        p1=p2;
    }
    free(header);
    head->next=NULL;
    return p0;
}

开始我没过,因为想当然的觉得既然header被free了,那么之前赋值的p1->next=header就是NULL

这是犯了机械主义的错误,木有考虑到事物是变化和互相联系的。。。

被赋值后,p1->next和header就木有啥关系了。

还有,单独写一个header能避免处理单节点的情况



你可能感兴趣的:(Leetcode)