【发布时间】:2019-03-12 00:29:18
【问题描述】:
我无法对这个单链表进行排序。目标是按指数降序对多项式进行排序。但是我不断收到属性错误:Nonetype 没有属性“nxt”,我不明白为什么。下面是我的代码
NodeModule.py
!/usr/bin/python
导入系统
sys.setrecursionlimit(4500)
"""一个包含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/bin/python
从 NodeModule 导入节点
类列表(节点): """带有预定义节点类的链表"""
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/bin/python
从 NodeModule 导入节点 从 ListModule 导入列表
def readPoly(message):
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': 主要()
【问题讨论】:
-
我看到的只是一些从未使用过的类定义。您需要向我们展示您是如何使用这些课程的。
-
@JohnGordon 我已经编辑过了
标签: python runtime-error attributeerror