题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
题目分析
这题题目都给出了解决方法,迭代或递归。
迭代解法
我的思路:
- 创建一个带头节点的链表new_head。
- 遍历原链表,将节点插到新链表的头节点后面。
- new_head.next即为所求。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
new_head = ListNode(0)
while head: #如果此时node不为空
# 将node头插法 插入new_head链表
head_next = head.next
head.next = new_head.next
new_head.next = head
head = head_next
return new_head.next
这里有一个细节,我创建了一个头节点,这样会方便很多。