Я делаю свой собственный Единый связанный список в python. Я узнал, что когда мне нужно вставить после узла 'p', сначала создаю новый узел, указывающий на следующую из p, а затем указываю новый узел со следующей из p.
Но когда я запускаю код ниже, я получаю ошибку
class SList:
class _Node:
def __init__(self, element, next = None):
self._element = element
self._next = next
def element(self):
return self._element
def next(self):
return self._next
def set_element(self, element):
self._element = element
def set_next(self, next):
self._next = next
def __init__(self, head = None):
self._head = head
.
.
.
.
def insert_after(self, element, p):
# element is new node, and p is the node already in SLL.
new_node = self._Node(element, p.next())
p.next() = new_node
Вывод становится таким ...
File "<ipython-input-100-f46148f593d4>", line 74
element.next() = new_node
^
SyntaxError: can't assign to function call
Так что я не могу продолжать, потому что, когда я ввел значение, как это ...
temp = SList()
temp.insert_first("A")
temp.insert_first("B")
temp.insert_first("C")
temp.insert_first("E")
temp.insert_first("F")
temp.insert_after("D", "C")
# I want A,B,C,D,E,F in continuously
Результат ...
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-101-e9d4a6a04b21> in <module>()
6 temp.insert_first("F")
7
----> 8 temp.insert_after("D", "C")
9
10 # s1.delete_first()
<ipython-input-96-aa629a206e57> in insert_after(self, element, p)
71
72 def insert_after(self, element, p):
---> 73 new_node = self._Node(element, p.next)
74 p.next = new_node
75 # new_node = self._Node(element, p._next())
AttributeError: 'str' object has no attribute 'next'
Что не так с функцией insert_after ???