- 要分清楚逻辑链表和代码链表的区别,代码链表的head不仅仅是指链表的头节点,还是一个节点类型的变量,代值以head为头节点的整个链表。
- 链表翻转有两种方法,递归和迭代。
- 递归


代码实现:
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-linked-list/solution/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 迭代
注意:往链表头部添加元素,天然具有倒序的特点。


代码实现:
class Solution {
public ListNode reverseList(ListNode head) {
ListNode newnode = null;
ListNode oldnode = head;
while(curr!=null){
ListNode next = oldnode.next;
oldnode.next = newnode;
newnode = oldnode;
oldnode = next;
}
return newnode;
}
}