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