コード例 #1
0
def partition_linked_list_around(value, list_head):

    first_half, second_half = list(), list()

    current = list_head

    if current.data < value:
        first_half.append(current.data)
    else:
        second_half.append(current.data)

    while current.next is not None:

        current = current.next

        if current.data < value:
            first_half.append(current.data)
        else:
            second_half.append(current.data)

    return get_singly_linked_list_from_values(first_half + second_half)
コード例 #2
0
def add_linked_list_numbers(head_num_one, head_num_two):

    numbers = list()

    for head in (head_num_one, head_num_two):

        current = head
        digits = list()

        while current.next is not None:
            digits.append(current.data)
            current = current.next

        digits.append(current.data)
        num = int(''.join(str(digit) for digit in reversed(digits)))

        numbers.append(num)

    number_sum_str = str(sum(numbers))
    reversed_digits = [int(digit) for digit in list(reversed(number_sum_str))]

    return get_singly_linked_list_from_values(reversed_digits)
コード例 #3
0
            digits.append(current.data)
            current = current.next

        digits.append(current.data)
        num = int(''.join(str(digit) for digit in reversed(digits)))

        numbers.append(num)

    number_sum_str = str(sum(numbers))
    reversed_digits = [int(digit) for digit in list(reversed(number_sum_str))]

    return get_singly_linked_list_from_values(reversed_digits)

#-------------------------------------------------------

num_1 = get_singly_linked_list_from_values([1,2,3])
num_2 = get_singly_linked_list_from_values([4,8,6])

desired_sum = get_singly_linked_list_from_values([5,0,0,1])
calculated_sum = add_linked_list_numbers(num_1, num_2)

assert linked_lists_equal(desired_sum, calculated_sum)


num_1 = get_singly_linked_list_from_values([1,1,1,0,1,7])
num_2 = get_singly_linked_list_from_values([2,3,4,0,9,4])

desired_sum = get_singly_linked_list_from_values([3,4,5,0,0,2,1])
calculated_sum = add_linked_list_numbers(num_1, num_2)

assert linked_lists_equal(desired_sum, calculated_sum)
コード例 #4
0
    if node.next is not None:
        next_node = node.next
        node.data = next_node.data
        node.next = next_node.next

    else:
        node = None

#-------------------------------------------------------

for _ in range(100):

    vals = list(range(10))
    random.shuffle(vals)

    head = get_singly_linked_list_from_values(vals)

    # pick a random node to remove
    # TODO: make this go up to 9, not 8, if I can
    # figure out a way remove the last node in a
    # singly linked list
    current = head
    for _ in range(random.randint(0,8)):
        current = current.next

    # remember the data we're about to remove,
    data_removed = current.data
    remove_this_node(current)

    # build list of remaining data in linked list
    ll_data = list()