#这个参考了大佬的解法,简要描述下吧
# 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 #返回新生成的链表