У меня проблемы с сортировкой этого односвязного списка. Цель состоит в том, чтобы отсортировать полином по его показателю в порядке убывания. Однако я продолжаю получать ошибку атрибута: Nontype нет атрибута nxt, и я не могу понять, почему. Вот мой код ниже
NodeModule.py
! / USR / бен / питон
import sys
sys.setrecursionlimit (4500)
"" "Модель, содержащая класс Node" ""
Класс Node (объект):
"" "Один узел в структуре данных" ""
def __init__(self, _coefficient, _exponent):
self._coefficient=_coefficient
self._exponent=_exponent
self.nxt=None
@property
def coefficient(self):
return self._coefficient
@coefficient.setter
def coefficient(self, c):
self._coefficient=c
@coefficient.deleter
def coefficient(self):
del self.coefficient
@property
def exponent(self):
return self._exponent
@exponent.setter
def exponent(self, e):
self._exponent=e
@exponent.deleter
def exponent(self):
del self._exponent
@property
def nxt(self):
return self._next
@nxt.setter
def nxt(self, n):
self._next=n
@nxt.deleter
def nxt(self):
del self._next
def __eq__(self, other):
if self._exponent==other._exponent:
return True
else:
return False
def __It__(self, other):
if self._exponent<other._exponent:
return True
else:
return False
def __str(self):
if self._coefficient>=0:
sign="+"
else:
sign=""
return sign +str(self._coefficient) + "X^" +str(self._exponent)
ListModule.py
! / USR / бен / питон
из NodeModule import Node
Список классов (Узел):
"" "Связанный список с предопределенным классом узлов" ""
def __init__(self):
self.head=None
self.count=0
def isEmpty(self):
return self.count==0
def getSize(self):
return self.count
def setNode(self, a=5, b=2):
n=Node(a, b)
return n
def insert(self, index, n):
if index<0 or index > self.count:
return False
if index==0:
n.next=self.head
self.head=n
self.count+=1
return True
walker=self.head
for i in range(index-1):
walker=walker.nxt
n.nxt=walker.nxt
walker.next=n
self.count+=1
return True
def delete(self, index):
if index < 0 or index > self.count:
return False
if index==0:
self.head=self.head.nxt
self.count-=1
return True
walker=self.head
for i in range(index-1):
walker=walker.nxt
walker.nxt=walker.nxt.nxt
self.count-=1
return True
def sort(self):
temp1=self.head.exponent
walker=self.head
j=0
while j < self.count:
for i in range(self.count):
walker=walker.nxt
if i==0:
if walker.nxt.exponent > temp1:
self.insert(0, walker.nxt)
self.delete(walker.nxt)
return True
while walker.nxt is not None and walker.nxt.nxt is not None:
if walker.nxt.exponent < walker.nxt.nxt.exponent:
self.insert(self.getsize(), walker.nxt.nxt)
self.delete(walker.nxt)
return True
return False
j+=1
def str(self):
if self.isEmpty():
return "\nEnd of Polynomial"
walker=self.head
output=[]
while walker is not None:
output.append(str(walker))
walker=walker._next
return " + " .join(output)
main.py
! / USR / бен / питон
из NodeModule import Node
из списка импорта списка модулей
def readPoly (сообщение):
l=List()
n=input(message)
for i in range(n):
c=input("Enter the coefficient of term %d " % i)
e=input("Enter the exponent of term %d " % i)
l.insert(0, Node(c,e))
return l
def main ():
l=readPoly("Enter the number of terms of the polynomial: ")
print l
l.sort()
print l
l.delete(0)
print (l)
если name == ' main ':
Основной () * +1041 *