Python 将链表的后半部分与前半部分使用;“跑步者”;技巧

Python 将链表的后半部分与前半部分使用;“跑步者”;技巧,python,linked-list,Python,Linked List,我正在阅读破解编码采访,它提到了解决一些链表问题的“Runner”技术。其中一个问题是,如果链表的长度为偶数,则将链表的前半部分与其后半部分交错。链表的实际长度未知 输入链表:a1->a2….->an->b1->b2….bn, 输出链表:a1->b1->a2->b2->…..an->bn 我的方法是创建两个指针,为指针B的每一步移动指针A的两个步骤,并将指针A恢复到第一个元素。这非常有效,它让我有一个指针在链表的上半部分开始,另一个指针在链表的下半部分开始 def intermix(self):

我正在阅读破解编码采访,它提到了解决一些链表问题的“Runner”技术。其中一个问题是,如果链表的长度为偶数,则将链表的前半部分与其后半部分交错。链表的实际长度未知

输入链表:
a1->a2….->an->b1->b2….bn

输出链表:
a1->b1->a2->b2->…..an->bn

我的方法是创建两个指针,为指针B的每一步移动指针A的两个步骤,并将指针A恢复到第一个元素。这非常有效,它让我有一个指针在链表的上半部分开始,另一个指针在链表的下半部分开始

def intermix(self):
    cur_node1 = self.head
    cur_node2 = self.head

    while(cur_node2.next != None):
        cur_node1 = cur_node1.next
        cur_node2 = cur_node2.next.next

    cur_node2 = self.head.next
    cur_node1 = cur_node1.next
因此,
1->2->3->4->5->6的输入链表返回
cur\u node2=1
cur\u node1=4

然而,我在交错部分遇到了麻烦。我试图从一个节点跳转到另一个节点,将两个指针一个一个地向前移动,但没有成功。我不知道如何从这里开始

while(cur_node1.next != None):
    cur_node2.next = cur_node1
    cur_node2 = cur_node2.next
    cur_node1.next = cur_node2
    cur_node1 = cur_node1.next
我以前写过这段代码,但它给了我一个无限循环。我很快意识到第二行和第四行重写了第一行和第三行,所以这段代码是完全错误的。有人能给我一个解决这些问题的办法吗

谢谢