翻转链表

描述

给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。
 
数据范围: n1000
要求:空间复杂度 O(1),时间复杂度 O(n) 。
 
如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
以上转换过程如下图所示:

实现

方式一

/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head == null || head.next == null) return head; ListNode newN = null; ListNode s = head; while(s!=null){ ListNode nextp = s.next; s.next=newN; newN=s; s = nextp; } return newN; } }

方式二

/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ import java.util.Stack; public class Solution { public ListNode ReverseList(ListNode head) { if(head == null || head.next==null) return head; Stack<ListNode> stackP = new Stack<>(); while(head!=null){ stackP.push(head); head = head.next; } head = stackP.pop(); ListNode lastP = head; while(!stackP.isEmpty()){ lastP.next=stackP.pop(); lastP=lastP.next; } lastP.next=null; return head; } }

__EOF__

本文作者始是逍遥人
本文链接https://www.cnblogs.com/brucewang92/p/15654471.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   始是逍遥人  阅读(52)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示