class LinkNode:
def __init__(self,val:int) :
self.val:int=val
self.pre=None
self.next=None
class Double_Queue_Linklist:
def __init__(self) :
self.head=LinkNode(0)
self.tail=LinkNode(0)
self.head.next=self.tail
self.tail.pre=self.head
self.size=0
def push_first(self,val:int)->None:
#从队首入队
add_Node=LinkNode(val)
add_Node.pre=self.head
add_Node.next=self.head.next
self.head.next=add_Node
self.head.next.pre=add_Node
self.size+=1
def push_last(self,val:int)->None:
#队尾入队
add_Node=LinkNode(val)
add_Node.pre=self.tail.pre
add_Node.next=self.tail
self.tail.pre.next=add_Node
self.tail.pre=add_Node
self.size+=1
def length_Queue(self)->int:
#队列长度
return self.size
def IsNull(self)->bool:
#判断队列是否为空
return self.size==0
def pop_first(self)->int:
#删除队首元素
a=self.head.next
self.head.next=a.next
a.next.pre=self.head
a.next=None
a.pre=None
self.size-=1
return a.val
def pop_last(self)->int:
#删除队尾元素
a=self.tail.pre
a.pre.next=self.tail
self.tail.pre=a.pre
a.pre=None
a.next=None
self.size-=1
return a.val
def to_list(self):
#队列转化为列表
traver_head=self.head
list1=[]
for i in range(self.size):
traver_head=traver_head.next
list1.append(traver_head.val)
return list1
def top(self):
#访问队首元素
if self.size==0:
raise Exception("队列为空")
return self.head.next.val
if __name__=='__main__':
a=Double_Queue_Linklist()
a.push_first(1)
a.push_first(2)
a.push_last(3)
a.push_first(5)
print(a.to_list())
a.pop_first()
# print(a.to_list())
print(a.length_Queue())
print(a.top())
为什么他的val会显示没有属性,应该怎么改让to_list方法运行