题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
题目分析
这是一道力扣的简单题目,可以使用在「数据结构——链表」中提到的“穿针引线”的方法迭代进行翻转链表。
通过设置两个指针,一个指针指向当前节点,一个指针指向当前节点的下一个节点。每次摘下当前结点,头插法插入新的链表中。
参考代码
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null) {
return null;
}
ListNode node = head;
ListNode next = node.next;
node.next = null;
while (next != null) {
ListNode tmp = next.next;
next.next = node;
node = next;
next = tmp;
}
return node;
}
}