题解 | 反转链表

反转链表

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
struct ListNode* ReverseList(struct ListNode* head ) {
    //思路
    //创建一个头结点,指向第一个结点,将该结点后面的所有结点,依次前移为头结点指向的第一结点;
    struct ListNode pHead = { .next = head };
    struct ListNode *pMove = head->next;
    struct ListNode *pTemp = NULL;
    if(head == NULL) {
        return NULL;
    }
    while (pMove != NULL) {
        pTemp = pMove; // 记录要被移动的成员
        head->next = pTemp->next; //断链
        // 插入到头结点的后面,成为新的第一结点
        pTemp->next = pHead.next; 
        pHead.next = pTemp;

        pMove = head->next; // 继续处理下一个结点
    }

    return pHead.next;
}

全部评论

相关推荐

仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务