题解 | #反转链表#

反转链表

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

反正指针指向
/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
struct ListNode* ReverseList(struct ListNode* pHead ) {
    // write code here
    if(pHead==NULL || pHead->next ==NULL)
        return pHead;
            
    
    struct ListNode* pre=pHead;//用于指向前一个节点
    struct ListNode* pCur=pHead->next;//辅助指针,用于指向当前节点
    pHead->next=NULL;
    struct ListNode* tmp=pCur;//用于保存当前节点的下一个节点地址
    
    while(pCur->next!=NULL)
    {
        tmp = pCur->next;//保存当前节点的下一个节点地址
        pCur->next=pre;//反转当前节点的指向
        pre=pCur;// 前一个节点前进到当前节点
        pCur =tmp;//当前节点前进一个节点
    }
    pCur->next=pre;
    return pCur;
    
}


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务