首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >单链表相关面试题--2.反转一个单链表

单链表相关面试题--2.反转一个单链表

作者头像
绝活蛋炒饭
发布2024-12-16 15:44:47
发布2024-12-16 15:44:47
1040
举报
文章被收录于专栏:绝活编程学习绝活编程学习

2.反转一个单链表

206. 反转链表 - 力扣(LeetCode)

/* 解题思路: 此题一般常用的方法有两种,三指针翻转法和头插法 1. 三指针翻转法 记录连续的三个节点,原地修改节点指向 2. 头插法 每一个节点都进行头插 */

代码语言:javascript
复制
// 三个指针翻转的思想完成逆置
struct ListNode* reverseList(struct ListNode* head) {
    if(head == NULL || head->next == NULL)
        return head;
    
    struct ListNode* n1, *n2, *n3;
    n1 = head;
    n2 = n1->next;
    n3 = n2->next;
    n1->next = NULL;
    //中间节点不为空,继续修改指向
    while(n2)
    {
        //中间节点指向反转
        n2->next = n1;
        //更新三个连续的节点
        n1 = n2;
        n2 = n3;
        if(n3)
            n3 = n3->next;
    }
    //返回新的头
    return n1;
}

// 取节点头插的思想完成逆置
struct ListNode* reverseList(struct ListNode* head) {
    struct ListNode* newhead = NULL;
    struct ListNode* cur = head;
    while(cur)
    {
        struct ListNode* next = cur->next;
        //头插新节点,更新头
        cur->next = newhead;
        newhead = cur;
        cur = next;
    }
    
    return newhead;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.反转一个单链表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档