LeetCode 206：反转链表 Reverse Linked List

Reverse a singly linked list.

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

```

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

迭代：

Java：

```class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode pre = null;
ListNode tmp = null;
while (head != null) {
tmp = head.next;//tmp暂存当前节点的下一个节点
head.next = pre;//当前节点下一个指向pre
pre = head;//刷新pre
head = tmp;//刷新当前节点为tmp
}
return pre;
}
}
```

Python3：

```class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
pre,tmp=None,None
while(head):
tmp=head.next
head.next=pre
pre=head
head=tmp
return pre
```

递归：

Java：

```class Solution {
public ListNode reverseList(ListNode head) {
//基线条件
if (head == null || head.next == null)
return head;
//递归
ListNode tmp = head.next;//暂存头节点的下一个节点
ListNode pre = reverseList(head.next);//递归调用该函数，pre为返回的新链表的头节点，原链表的最后一个节点，无论递归多少层该返回值一直传递不变
tmp.next = head;//暂存的下一个节点指向传入节点
head.next = null;//下一个节点即原本指向tmp的节点 置空
return pre;
}
}
```

Python3：

```class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
tmp = head.next
pre = self.reverseList(head.next)
tmp.next = head
head.next = None
return pre```

0 条评论

• LeetCode 206：反转链表 Reverse Linked List

A linked list can be reversed either iteratively or recursively. Could you imple...

• LeetCode 203：移除链表元素

Remove all elements from a linked list of integers that have value val.

• LeetCode 203：移除链表元素

Remove all elements from a linked list of integers that have value val.

• LeetCode 206：反转链表 Reverse Linked List

A linked list can be reversed either iteratively or recursively. Could you imple...

• Java实现单向链表

一、前言 最近在回顾数据结构与算法，有部分的算法题用到了栈的思想，说起栈又不得不说链表了。数组和链表都是线性存储结构的基础，栈和队列都是线性存储结构的应用～ 本...

• Java-双向链表-从实现到各类操作（全家桶，包含各类常见方法）

版权声明：署名，允许他人基于本文进行创作，且必须基于与原先许可协议相同的许可协议分发本文 （Creative Commons）

• 精选 TOP 面试题 001 | LeetCode 237. 删除链表中的节点

请编写一个函数，使其可以删除某个链表中给定的（非末尾）节点，你将只被给定要求被删除的节点。

• JS数据结构第五篇 --- 二叉树和二叉查找树

从逻辑结构角度来看，前面说的链表、栈、队列都是线性结构；而今天要了解的“二叉树”属于树形结构。

• Java的ConcurrentLinkedQueue

实现一个线程安全的队列有两种实现方式一种是使用阻塞算法，另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁（入队和出队用同一把锁）或两个锁（入队和出队用不同...

• TDW千台Spark千亿节点对相似度计算

相似度计算在信息检索、数据挖掘等领域有着广泛的应用，是目前推荐引擎中的重要组成部分。随着互联网用户数目和内容的爆炸性增长，对大规模数据进行相似度计算的需求变得...