我被赋予了一个删除链接列表中元素为0的元素的赋值。我试过这段代码。但是我得到了一个错误 “AttributeError:'NoneType'对象没有属性'data'”
import random
class Node :
def __init__( self, data ) :
self.data = data
self.next = None
self.prev = None
def givedata(self):
return self.data
class LinkedList :
def __init__( self ) :
self.head = None
def add( self, data ) :
node = Node( data )
if self.head == None :
self.head = node
else :
node.next = self.head
node.next.prev = node
self.head = node
def search( self, k ) :
p = self.head
if p != None :
while p.next != None :
if ( p.data == k ) :
return p
p = p.next
if ( p.data == k ) :
return p
return None
def remove( self, p ) :
tmp = p.prev
p.prev.next = p.next
p.prev = tmp
def list_print(self):
node = self.head
while node:
print (node.data,end=" ")
node = node.next
def getdata(self):
self.nodedata=self.head
return self.nodedata.data
脚本:
ll=LinkedList()
for i in range(random.randint(2,10)):
ll.add(random.randint(-50,50))
ll.list_print()
print('\n')
l1=LinkedList()
while ll:
while l1:
if l1.getdata()+ll.getdata()==0:
print("0\n")#just to know if this works or not
l1=l1.head.next
ll=ll.head.next
我尝试访问特定元素的链接列表中的数据。 请你帮我浏览链表
答案 0 :(得分:0)
您可以选择省略某些属性,但不能选择添加除定义属性之外的其他属性。
这个错误只是说在你使用它的地方不能使用属性data-width。
答案 1 :(得分:0)
您收到此错误是因为
l1=LinkedList()
创建一个名为l1的新链接列表,但您没有向其添加任何元素,它是一个空链表,其头部为无。
致电时
l1.getdata()
你看到了那个错误
修改强>
ll=LinkedList()
for i in range(random.randint(2,10)):
ll.add(random.randint(-50,50))
ll.list_print()
print('\n')
ptr1 = ll.head
while ptr1:
ptr2 = ptr1.next
while ptr2:
if ptr1.data+ptr2.data == 0:
print("0\n")#just to know if this works or not
ptr2 = ptr2.next
ptr1 = ptr1.next
此代码应该按您的要求执行
答案 2 :(得分:0)
创建l1 = LinkedList()
时,.head
初始化为None
。这会在您致电.getdata()
时出现问题,因为该方法正在尝试调用self.head.data
,这相当于调用None.data
。
您可以使用以下方法修复.getdata
方法:
def getdata(self):
self.nodedata=self.head
if not self.nodedata:
return 0
return self.nodedata.data