Связанный список - добавляется на конкретное значение узла? - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь создать функцию добавления для класса связанного списка , который может добавлять элемент в определенный узел в зависимости от передаваемого значения.

Пока это то, что я придумал:

def append(linked_l, value):
    if linked_l == None:
        return linked_list(value)

    new_node = linked_list(value)
    head = linked_l

    while linked_l.next != None:
        if linked_l.value <= value <= linked_l.next.value:
            new_node.next = linked_l.next
            linked_l.next = new_node
            break
        linked_l = linked_l.next

    return head

Но, очевидно, это не работает должным образом.

Например, если у меня есть sample = list_convert_ll([3, 5, 6, 8]), тогда append(sample, 2) он должен иметь возможность поместить добавляемое значение (2) в порядке убывания, в этом случае результат будет 2, 3, 5, 6, 8.

если это append(sample, 7), то 3, 5, 6, 7, 8.

Я выяснил, как изменить конечное значение, но у меня возникли проблемы, как справиться с этими 3 случаями (значение, которое ниже / выше или находится в середине списка)

class linked_list:
    def __init__(self, val, next=None):
        self.val = val
        self.next  = next

def list_convert_ll(lis):
    if lis == []:
        return None
    head = end = linked_list(l[0])
    for value in lis[1:]:
        end.next = linked_list(value)
        rear = rear .next
    return head

Я не могу изменять или создавать какие-либо функции в классе, просто только для функции append().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...