题解 | 反转链表

反转链表

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

1,首先创建一个头节点dummyNode,用于始终指向链表的头部,该头节点的下一个节点指向我们要翻转的链表;
2,设置一个*pre节点,该节点始终是dummyNode节点,既头结点指针;
3,设置一个cur节点,该节点始终是head节点,cur节点的下一个节点始终指向下一个要翻转的节点;
4,设置一个next节点,该节点指向接下来要做翻转的节点,在做翻转处理的时候,一直移动的是next节点;
/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
#include <stdlib.h>
struct ListNode* ReverseList(struct ListNode* head ) {
    struct ListNode *dummyNode = malloc(sizeof(struct ListNode));
    dummyNode->val = -1;
    dummyNode->next = head;

    if (head == NULL || head->val == NULL)
        return head;
    
    struct ListNode *pre = dummyNode;
    struct ListNode *cur = pre->next;
    struct ListNode *next;
    while (cur->next) {
        next = cur->next;
        cur->next = next->next;
        next->next = pre->next;
        pre->next = next;
    }

    return dummyNode->next;
}

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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