剑指 Offer 24 反转链表
2021-12-05 本文已影响0人
itbird01
剑指 Offer 24. 反转链表
题意:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
解题思路
解法:
1.用哑结点的技巧来实现不借助其他数据结构实现,链表翻转
2.声明哑结点
3.先将哑结点的下一节点临时保存一下,然后将哑结点的下一节点指向目前遍历到的最新值
4.将head节点往后移一位置
5.将哑结点,与之前临时保存下来的链表结合
6.哑结点第一位为我们开头添加的,需要跳过,所以node.next即为我们所求的翻转链表
解题遇到的问题
无
后续需要总结学习的知识点
无
##解法1
class Solution {
public ListNode reverseList(ListNode head) {
// 声明哑结点
ListNode node = new ListNode(0);
ListNode tempListNode;
while (head != null) {
// 先将哑结点的下一节点临时保存一下
tempListNode = node.next;
// 将哑结点的下一节点指向目前遍历到的最新值
node.next = new ListNode(head.val);
// 将节点往后移一位置
head = head.next;
// 将哑结点,与之前临时保存下来的链表结合
node.next.next = tempListNode;
}
// 哑结点第一位为我们开头添加的
return node.next;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
}