我的教授要求我对链接列表执行Quicksort。由于所有的递归和链接对我来说还是很新的,这已经变得很混乱。问题似乎与无意中将某项分配为“无”有关 到目前为止,这是我的代码:
class Node:
def __init__(self,d,n):
self.data = d
self.next = n
class LinkedList:
def __init__(self):
self.head = None
self.length = 0
def append(self,d):
if self.head == None:
self.head = Node(d,None)
else:
ptr = self.head
while ptr.next != None:
ptr = ptr.next
ptr.next = Node(d,None)
self.length += 1
def merge(self,other):
ptr = self.head
while ptr.next != None:
ptr = ptr.next
ptr.next = other.head
def removeVal(self,d):
if self.head == None:
return
if self.head.data == d:
self.head = self.head.next
self.length -= 1
else:
ptr = self.head
while ptr.next != None:
if ptr.next.data == d:
ptr.next = ptr.next.next
self.length -= 1
break
ptr = ptr.next
def sort(self):
if self.head!=None:
pivot=self.head.data
self.removeVal(pivot)
smaller=LinkedList()
other=LinkedList()
ptr=self.head
while ptr.next!=None:
ptr=ptr.next
if ptr.data<pivot:
smaller.append(ptr.data)
else:
other.append(ptr.data)
smaller.sort()
other.sort()
self=smaller
self.append(pivot)
self.merge(other)
ls = LinkedList()
ls.append(0)
ls.append(1)
ls.append(3)
ls.sort()
运行此命令会出现以下错误
Traceback (most recent call last):
File "main.py",line 71,in <module>
ls.sort()
File "main.py",line 58,in sort
other.sort()
File "main.py",line 51,in sort
while ptr.next!=None:
AttributeError: 'NoneType' object has no attribute 'next'
任何帮助将不胜感激