题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
 //方法一;指针颠倒
 /*
struct ListNode* ReverseList(struct ListNode* pHead ) {
    // write code here
    struct ListNode *pre=NULL ,*cur;
    cur=pHead;
    if(pHead==NULL||pHead->next==NULL)
    {
        return pHead;
    }
    else
    {
        while(cur->next!=NULL)
        {
            struct ListNode *temp;
            temp=cur->next;
            cur->next=pre;
            pre=cur;
            cur=temp;
            //cur=cur->next;
        }
        cur->next=pre;
        pre=cur;

    }
    return pre; 
}
*/
//方法二:依次取出结点,并且头插
struct ListNode* ReverseList(struct ListNode* pHead ) 
{
    if(pHead==NULL||pHead->next==NULL)
    {
        return pHead;
    }
    else
    {
        struct ListNode *pre,*cur;
        cur=pHead;
        struct ListNode *first=NULL;
        while(cur->next!=NULL)
        {
            struct ListNode *temp;
            if(first==NULL)
            {
                temp=cur->next;
                cur->next=first;
                first=cur;
                cur=temp;
            }
            else
            {
                temp=cur->next;
                cur->next=first;
                first=cur;
                cur=temp;
            }

        }
        cur->next=first;
        first=cur;
        return first;
    }
    
}

全部评论

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务