题解 | 反转链表

反转链表

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;
}

全部评论

相关推荐

lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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