Добавьте узел в связанный список, который реализован с помощью двух списков.Python

Программы на Python
Ответить
Anonymous
 Добавьте узел в связанный список, который реализован с помощью двух списков.

Сообщение Anonymous »

Я реализую связанный список в Python, используя два списка — один для хранения значений и один для хранения указателей, так что значение узла имеет значение в значениях, а значение, на которое он указывает, сохраняется в соответствующем индексе в массиве указателей.
Я написал функцию, которая добавляет узел в начало связанного списка. Он увеличивает каждый элемент в обоих массивах, запоминая последний элемент, чтобы его можно было добавить в конец, а затем вставляет новый узел с индексом 0 в списках.
I оставил индексы self.pointers в терминах self.values, поскольку они имеют одинаковый размер и настраиваются одинаково.
Мой код:< /p>

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

class LinkedList:
def __init__(self):
self.values = []
self.pointers = []

def addAtHead(self, val):
if not self.values:
self.values.append(val)
self.pointers.append(None)
return

append_val = self.values[-1]

for i in range(1, len(self.values)):
self.values[len(self.values) - i] = self.values[len(self.values) - i-1]
self.pointers[len(self.values) - i] = self.pointers[len(self.values) - i-1]

self.values[0] = val
self.pointers[0] = self.values[1]

self.values.append(append_val)
self.pointers.append(None)

ll = LinkedList()
ll.addAtHead(10)
ll.addAtHead(20)
Когда я запускаю это, я получаю следующую ошибку:

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

Traceback (most recent call last):
File "/main.py", line 29, in 
ll.addAtHead(2)
File "/main.py", line 20, in addAtHead
self.pointers[0] = self.values[1]
~~~~~~~~~~~^^^
IndexError: list index out of range
Но этот оператор необходим для присоединения первого узла...
В чем моя ошибка?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -two-lists
Ответить

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

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

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

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

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