题目来自剑指Offer之十六。
链表结点结构
class ListNode{
int value;
ListNode next = null;
public ListNode(int value){
this.value = value;
}
}
题目描述
- 输入一个链表的头结点,反转该链表并输出翻转后的头结点
代码实现
- 遍历该链表
- 保存后一个结点,以防止当前结点的next值更新后链表断开
- 保存前一个结点,以便当前结点的next值更新为前一个结点
- 最后一个结点将是反转之后的头结点,保存该结点返回
public static ListNode reverseList(ListNode head) {
ListNode reverseListHead = null;
ListNode curNode = head;
ListNode preNode = null;
ListNode nextNode = null;
while(curNode != null){
nextNode = curNode.next;
if(nextNode == null){
reverseListHead = curNode;
}
curNode.next = preNode;
preNode = curNode;
curNode = nextNode;
}
return reverseListHead;
}
我组建了一个技术交流群,提供免费的每日科技早报服务,里边也会有众多知名互联网企业的技术大佬一起交流学习,共同成长。需要的朋友可以加我微信(微信ID:919201148),我拉你进群,并有福利相送。
关注我的微信公众号,回复“礼包”领取我的学习资料
涵盖自学编程、Java技术、分布式笔记、算法刷题和程序员必读电子书等众多资料合集。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。