Как найти первый индекс из связанного списка, где определенное значение найдено с помощью рекурсии в Python - PullRequest
0 голосов
/ 30 января 2020

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

class Linkedlist:

    def __init__(self, value, tail):
        self.value = value
        self.tail = tail

После этого есть другие методы, которые работают нормально, но проблема в том, как я могу вернуть первый индекс в связанном списке, где значение x нашел? Я попробовал следующий, но он работает только для первого индекса (0).

   def index(self, x):

        index = 0
        if x == self.value:
            return 0
        else:
            return Linkedlist.index(self.tail, index+1)

Я думаю, проблема в том, что индекс всегда остается нулевым. Как я могу обойти это?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Нет необходимости передавать индекс. Если значение здесь, верните 0. В противном случае получите индекс в хвосте и добавьте 1.

def index(self, x):
    if x == self.value:
        return 0
    return self.tail.index(x) + 1
1 голос
/ 30 января 2020

index() необходимо принять искомое значение (x), а также текущий индекс, который изначально равен 0.

Допущения, которые я делаю:

  • value является заголовком связанного списка.
  • tail является связным списком.
  • Если следующего термина нет, tail равен None.
class LinkedList:
    def __init__(self, value, tail):
        self.value = value
        self.tail = tail

    def index(self, x, i=0):
        if self.value == x:
             return i
        if self.tail is None:
             raise IndexError
        return self.tail.index(x, i+1)
...