题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
一、python链表结构
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
二、输入,输出
输入:链表头结点
输出:反向链表的头结点
@param head ListNode类
@return ListNode类
三、解题思路
-
要区分
!=None与not,均可以,但易错。 -
算法流程图解
-
要注意先判断
head==None和head.next==None
!=None的写法:
class Solution:
def ReverseList(self , head: ListNode) -> ListNode:
# write code here
if head==None:
return None
if head.next==None:
return head
leftPointer=head
midPointer=head.next
rightPointer=head.next.next
leftPointer.next=None
while rightPointer!=None:
midPointer.next=leftPointer
leftPointer=midPointer
midPointer=rightPointer
rightPointer=rightPointer.next
midPointer.next=leftPointer
return midPointer
not的写法:
class Solution:
def ReverseList(self , head: ListNode) -> ListNode:
# write code here
if not head:
return None
if not head.next:
return head
leftPointer=head
midPointer=head.next
rightPointer=head.next.next
leftPointer.next=None
while rightPointer:
midPointer.next=leftPointer
leftPointer=midPointer
midPointer=rightPointer
rightPointer=rightPointer.next
midPointer.next=leftPointer
return midPointer

