Reversing a linked list in pythonPython

Программы на Python
Ответить
Anonymous
 Reversing a linked list in python

Сообщение Anonymous »

Меня просят перевернуть a, который принимает head в качестве параметра, где в качестве head является связанный список, например: 1 -> 2 -> 3, который был возвращен из уже определенной функции. Я попытался реализовать функциюverse_linked_list следующим образом:

Код: Выделить всё

def reverse_linked_list(head):
temp = head
head = None
temp1 = temp.next
temp2 = temp1.next
temp1.next = None
temp2.next = temp1
temp1.next = temp
return temp2

class Node(object):
def __init__(self,value=None):
self.value = value
self.next = None

def to_linked_list(plist):
head = None
prev = None
for element in plist:
node = Node(element)
if not head:
head = node
else:
prev.next = node
prev = node
return head

def from_linked_list(head):
result = []
counter = 0
while head and counter < 100: # tests don't use more than 100 nodes, so bail if you loop 100 times.
result.append(head.value)
head = head.next
counter += 1
return result

def check_reversal(input):
head = to_linked_list(input)
result = reverse_linked_list(head)
assert list(reversed(input)) == from_linked_list(result)
Он вызывается так: check_reversal([1,2,3]). Функция, которую я написал для переворота списка, выдает [3,2,1,2,1,2,1,2,1] и работает только для списка длиной 3. Как я могу обобщить ее для списка длины n?

Подробнее здесь: https://stackoverflow.com/questions/215 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»