# 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))
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)))
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)))
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)))
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)))
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))
# 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))