输入一个链表,反转链表后,输出新链表的表头。
(Leetcode 206: reverse linked list)
反转链表是比较重要的题,面试笔试经常会考。
做链表题的时候,如果不知道怎么做,最好可以画一个例子看看,这样容易会有思路。
这里主要用了两种方法来做。
参考:https://blog.csdn.net/qq_24429333/article/details/87867289
image.png
def reverseList(self, head):
prev = None # prev记录新的链表的头结点
while head:
curr = head
head = head.next # 指向下一个结点,就是要处理的数
curr.next = prev # 把上一次循环的结果接上来
prev = curr
return prev
还有一种递归的方法:
image.png
def ReverseList(self, head):
if head==None or head.next==None:
return head
newlist=ReverseList(head.next)
head.next.next=head
head.next=None
return newlist