Я пытаюсь связать связанный список Python, не копируя данные, содержащиеся в узлах списка. У меня есть функция, которая объединит список, используя копии узлов, которые были переданы, но я не могу получить функцию, которая не использует копии для работы.Связанный с Python Связанный список
Эти функции предназначены для целей тестирования и синхронизации; Я знаю, что встроенный список Python потрясающий!
Вот класс, с которым я работал, и функцию конкатенации.
class Cell:
def __init__(self, data, next = None):
self.data = data
self.next = next
def print_list(self):
node = self
while node != None:
print node.data
node = node.next
Функция конкатенации не должна быть функцией-членом класса Cell.
def list_concat(A, B):
while A.next != None:
A = A.next
A.next = B
return A
Эта функция перезаписывает первый элемент списка, если параметр A имеет более одного узла. Я понимаю, почему это происходит, но я не уверен, как это сделать.
Вот код тестирования, который я использовал для этой функции.
e = Cell(5)
test = Cell(3, Cell(4))
test2 = list_concat(test2, e)
test2.print_list()
Любое понимание или помощь были бы весьма полезными.
* отредактирован, чтобы исправить форматирование кода
Ваша функция конкатенации должна работать. Обратите внимание, что 'list' не является связанным списком. Я бы предположил, что вы смотрите на реализации Lisp, поскольку они используют ячейки той же структуры, что и вы. – Marcin
Я думал, что эта реализация также должна работать, однако, когда я печатаю список (test2), он перечисляет элементы как 4 -> 5 -> None, когда он должен отображать 3 -> 4 -> 5 -> None. –
Обратите внимание, что в вашем примере кода вы используете test2 как параметр перед назначением ему. – Marcin