- 反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
思路1:用数组存,然后新建
# 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:
d = []
if not head or head.next==None:
return head
while head!=None:
d.append(int(head.val))
head = head.next
ans = ListNode(1)
t = ans
d.reverse()
for i in d:
t.next = ListNode(i)
t = t.next
return ans.next
思路2:迭代
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
p1 = None #前一个节点指针
p2 = head #当前节点指针
while p2:
tmp = p2.next #临时存储当前节点指针的下一位
p2.next = p1 #反转
p1 = p2 #前一个节点指针后移一位
p2 = tmp #当前节点指针后移一位
return p1