В Python дан односвязный список, сложите его, разделив его пополам (вокруг медианы) и переверните каждую половину - PullRequest
0 голосов
/ 07 марта 2019

Я мог бы изменить это, но запутался, как получить доступ к медиане связного списка

def reverseLinkedList(head):

    current =  head
    previous = None
    nextNode = None

    while current:
        nextNode = current.nextNode
        current.nextNode = previous

        previous = current
        current = nextNode

    return previous

Может кто-нибудь помочь с решением?

1 Ответ

0 голосов
/ 07 марта 2019

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

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

...