コード例 #1
0
    #     pre_end.next = pre  # m之前的nodes与该段的nodes连接
    #     tmp_start.next = next_node  # 该段的nodes连接与n之后的nodes连接
    #
    # dummy = ListNode(-1)
    # dummy.next = head
    # p = dummy
    # index = 1
    # start = None
    # while p:
    #     if index == m:  # m的前一个位置
    #         start = p   # m的前一个node
    #     if index == n + 1:  # 刚好n的位置
    #         reverse_between_linked(start.next, start, n-m+1)
    #         return dummy.next
    #     index += 1
    #     p = p.next


if __name__ == "__main__":
    head = ListNode(1)
    head.next = mid1 = ListNode(2)
    mid1.next = mid2 = ListNode(3)
    mid3 = mid2.next = ListNode(4)
    mid4 = mid3.next = ListNode(5)
    mid5 = mid4.next = ListNode(6)
    mid5.next = None

    m, n = 2, 5
    res = reverse_linked_list_ii(head, m, n)
    print(show_list_node(res))
コード例 #2
0
    if not head or not head.next:
        return head

    dumpy = ListNode(-1)
    dumpy.next = head
    pre = dumpy
    cur = pre.next
    while cur and cur.next:
        next = cur.next

        cur.next = next.next
        next.next = cur
        pre.next = next

        pre = pre.next.next
        cur = pre.next

    return dumpy.next


if __name__ == "__main__":
    head = ListNode(1)
    head.next = mid1 = ListNode(2)
    mid1.next = mid2 = ListNode(3)
    mid3 = mid2.next = ListNode(4)
    mid4 = mid3.next = ListNode(5)
    mid5 = mid4.next = ListNode(6)
    mid5.next = None

    print(show_list_node(swap_nodes_pairs1(head)))
コード例 #3
0
def reverse_linklist(head):
    """
    :param head: ListNode(int)
    :return: ListNode(int)
    """
    dummy = ListNode(-1)
    dummy.next = head
    pre = dummy
    cur = pre.next
    next = cur.next
    while next:
        cur.next = next.next
        next.next = pre.next
        pre.next = next
        next = cur.next

    return dummy.next


if __name__ == '__main__':
    head = ListNode(1)
    head.next = mid1 = ListNode(2)
    mid1.next = mid2 = ListNode(3)
    mid3 = mid2.next = ListNode(4)
    mid4 = mid3.next = ListNode(5)
    mid5 = mid4.next = ListNode(6)
    mid5.next = None

    print(show_list_node(reverse_linklist(head)))
コード例 #4
0
def odd_even_linked_list1(head):
    if not head or not head.next:
        return head
    odd = head
    even = head.next
    even_head = even
    while even and even.next:
        odd.next = even.next
        odd = odd.next
        even.next = odd.next
        even = even.next
    odd.next = even_head

    return head


if __name__ == "__main__":
    head = ListNode(1)
    head_2 = ListNode(2)
    head_3 = ListNode(3)
    head_4 = ListNode(4)
    head_5 = ListNode(5)
    head.next = head_2
    head_2.next = head_3
    head_3.next = head_4
    head_4.next = head_5
    head_5.next = None

    print(show_list_node(odd_even_linked_list1(head)))
コード例 #5
0
    while cur:
        if cur.val < x:
            if last == pre:
                last = last.next
                pre = pre.next
                cur = cur.next
            else:
                tmp = cur.next
                pre.next = cur.next
                cur.next = last.next
                last.next = cur
                last = last.next
                cur = tmp
        else:
            pre = pre.next
            cur = cur.next

    return new_head.next


if __name__ == "__main__":
    head = ListNode(1)
    head.next = mid1 = ListNode(4)
    mid1.next = mid2 = ListNode(3)
    mid3 = mid2.next = ListNode(2)
    mid4 = mid3.next = ListNode(5)
    mid5 = mid4.next = ListNode(2)
    mid5.next = None

    print(show_list_node(head))
    print(show_list_node(partition_list(head, 3)))
コード例 #6
0
    if not head:
        return
    # dumpy = ListNode(-1)
    # dumpy.next = head
    # pre = dumpy
    pre = ListNode(-1)
    pre.next = head
    cur = head
    while cur.next:
        ss = cur.next
        cur.next = ss.next
        ss.next = pre.next
        pre.next = ss

    # return dumpy.next
    return pre.next


if __name__ == '__main__':
    head = ListNode(1)
    node1 = ListNode(2)
    head.next = node1
    node2 = ListNode(3)
    node1.next = node2
    node3 = ListNode(4)
    node2.next = node3
    node3.next = None

    print(show_list_node(head))
    head = reverse_linked_list(head)
    print(show_list_node(head))
コード例 #7
0
    #     tmp.next = head
    #     head = tmp
    # return head


if __name__ == "__main__":
    head = ListNode(1)
    head_2 = ListNode(2)
    head_3 = ListNode(3)
    head_4 = ListNode(4)
    head_5 = ListNode(5)
    head.next = head_2
    head_2.next = head_3
    head_3.next = head_4
    head_4.next = head_5
    head_5.next = None

    head1 = ListNode(2)
    head1_2 = ListNode(5)
    head1_3 = ListNode(6)
    head1_4 = ListNode(9)
    # head1_5 = ListNode(4)
    head1.next = head1_2
    head1_2.next = head1_3
    head1_3.next = head1_4
    head1_4.next = None
    # head1_5.next = None

    tmp = add_two_numbers_ii(head, head1)
    print(show_list_node(tmp))