#这个参考了大佬的解法,简要描述下吧 # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def reorderList(self , head ): if not head: #处理链表头为空的情况 return None lis=[] while head: #将原本链表中的每个元素取出并切断相互的联系,按原顺序加入列表里 tmp=head #tmp临时变量里装链表头 head=head.next #原链表头下移到下一个元素那 tmp.next=None #切断tmp变量里链表头和下一位元素的关系 lis.append(tmp) #把它装进列表 new_head=lis.pop(0) #产生新链表头 tail=new_head #代替新链表头去变换 while lis: #如果列表不为空,即里面元素未被取完 tail.next=lis.pop(-1) #新链表头指向列表最后一个元素 tail=tail.next #链表头变换成新链表的末位,用于链接下一个元素 if lis: #如果列表不为空,即里面元素未被取完 tail.next=lis.pop(0) #链表指向列表第一个元素 tail=tail.next #链表头变换成新链表的末位,用于链接下一个元素 return new_head #返回新生成的链表