Я делаю свою собственную функцию merge_list.Я уже сделал класс SList () и класс _Node ().Но когда я ввожу два отсортированных списка в merge_list, функция merge_list не может сравнивать значения двух узлов, показывая type object '_Node' has no attribute '_element'
, но класс _Node имеет атрибут _element (я также пытаюсь использовать element, но он тоже не работает).Что не так с моей функцией ??
Это мой частичный код для class SList()
, class _Node()
и полный код merge_list
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_first(self, element):
self._head = self._Node(element, self._head)
def insert_after(self, element, p):
new_node = self._Node(element, p.next())
p._next = new_node
.,,и моя функция merge_list
def merge_list(s1, s2):
s3 = SList()
s3._Node(None, None)
prev = s3
while s1 != None and s2 != None:
if s1._Node._element<= s2._Node._element: # this line is the problem
prev.next = s1
s1 = s1.next
else:
prev.next = s2
s2 = s2.next
prev = prev.next
if s1 == None:
prev.next = s2
elif s2 == None:
prev.next = s1
return s3.next
После того, как я сделал эту функцию, я ввел два отсортированных списка, как это, и вызвал функцию merge_list
if __name__ == "__main__":
s1 = SList()
s1.insert_first(1)
s1.insert_first(3)
s1.insert_first(5)
s1.insert_first(7)
s1.insert_first(9)
s1.insert_first(11)
s1.insert_first(13)
print(f"s1 :", s1)
s2 = SList()
s2.insert_first(2)
s2.insert_first(4)
s2.insert_first(6)
print(f"s2 : ", s2)
merge_list(s1, s2)
, и на выходе получилось
Traceback (most recent call last):
s1 : 13 -> 11 -> 9 -> 7 -> 5 -> 3 -> 1 -> None: 7 element(s)
s2 : 6 -> 4 -> 2 -> None: 3 element(s)
File "", line 334, in <module>
merge_list(s1, s2)
File "", line 151, in merge_list
if s1._Node._element<= s2._Node._element:
AttributeError: type object '_Node' has no attribute '_element'
Кажется, списки s1, s2 успешно созданы, но не могут сравнить значение узла.В чем проблема с функцией merge_list ??