博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer:面试题24. 反转链表
阅读量:3907 次
发布时间:2019-05-23

本文共 1347 字,大约阅读时间需要 4 分钟。

题目:反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL

限制:

0 <= 节点个数 <= 5000

解题:

方法一:双指针

  • 我们可以申请两个指针,第一个指针叫 new_next,最初是指向 old_next 的;
  • 第二个指针 old_next 指向 head,然后不断遍历 old_next;
  • 每次迭代到 old_next,都将 old_next 的 next 指向 new_next,然后 new_next 和 old_next 前进一位;
  • 都迭代完了(old_next 变成 null 了),new_next 就是最后一个节点了。
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* reverseList(ListNode* head) {        if (!head || !head->next) return head;        ListNode* new_next = NULL,*old_next = head;        while(old_next) {            ListNode* tmp = old_next->next;            old_next->next = new_next;            new_next = old_next;            old_next = tmp;        }        return new_next;    }};

方法二:递归

递归的两个条件:

  • 终止条件是当前节点或者下一个节点==null
  • 在函数内部,改变节点的指向,也就是 head 的下一个节点指向 head 递归函数那句

        head.next.next = head

class Solution {public:    ListNode* reverseList(ListNode* head) {        if (!head || !head->next) return head;//递归终止条件是当前为空,或者下一个节点为空        ListNode* cur = reverseList(head->next);        //这里的cur就是最后一个节点		//如果链表是 1->2->3->4->5,那么此时的cur就是5		//而head是4,head的下一个是5,下下一个是空		//所以head.next.next 就是5->4        head->next->next = head;          head->next = NULL;          return cur;    }};

 

转载地址:http://wbgen.baihongyu.com/

你可能感兴趣的文章
学习笔记 | 传统企业互联网改革之道
查看>>
真正的高手,都有增长思维!(深度好文)
查看>>
推荐一款.NET Core开源爬虫神器:DotnetSpider
查看>>
Leansoft再发招贤令:面试官徐磊有话讲 | IDCF
查看>>
关于C# Span的一些实践
查看>>
linq 查询的结果会开辟新的内存吗?
查看>>
WPF开发的实用小工具 - 快捷悬浮菜单
查看>>
.Net orm 开源项目 FreeSql 2.0.0
查看>>
多线程并发如何高效实现生产者/消费者?
查看>>
学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片
查看>>
IdentityServer4系列 | 简化模式
查看>>
如何在 C# 中使用 AutoMapper
查看>>
BCVP开发者说第4期:Remember.Core
查看>>
Entity Framework Core 5中实现批量更新、删除
查看>>
小试YARP
查看>>
如何使用 C# 中的 HashSet
查看>>
api-hook,更轻量的接口测试工具
查看>>
一个情怀引发的生产事故(续)
查看>>
做架构也得讲武德
查看>>
PHP大势已去,PHP宝藏可为我所用
查看>>