Как мне рекурсивно найти элемент в связанном списке, но последний элемент не равен None - PullRequest
0 голосов
/ 17 февраля 2019

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

node1 = Node(44)
node2 = Node(220)
node3 = Node(320)
node4 = Node(402)
node2.setNext(node1)
node3.setNext(node2)
node4.setNext(node3)

, поэтому, если я введу find для последнего значения node4, он должен вернуть 44

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Ваш связанный список выглядит следующим образом:

node4 -> node3 -> node2 -> node1

Нет начала, нет конца, ваш связанный список находится в вакууме.

Исправить его будетПохоже,

linked_list -> node4 -> node3 -> node2 -> node1 -> None

Итак, вам нужно добавить команду

node1.setNext(None)

Более того, вам нужен класс для создания связанных списков, скажем LinkedList, у которых экземпляры будут иметьуказатель на первый член.

Вы можете реализовать этот класс с помощью метода для установки этого указателя, скажем setFirst();тогда вы будете использовать эти команды:

my_list = LinkedList()
my_list.setFirst(node4)

или установить этот указатель непосредственно в конструкторе (то есть в методе __init__());тогда вы будете использовать эту команду:

my_list = LinkedList(node4)
0 голосов
/ 17 февраля 2019
n = node1
while n.next() == None:
    n = n.next()
 ... do something ...

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

def r(n: linkedlist)
    if n.next() == None:
        return n
    else:
        r(n.next())
...