问题:输出头部和尾部节点的时候,一直显示的是none,怀疑并没有成功入列。 代码如下: #阅读理解课件中刻画的带表头结点及表尾结点指针的连接表技术,/ # 实现一个基于该方案的Queue类。自行构造数据并测试该类。
class Node():
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
class Queue:#(链表长度为list,头链表是head,尾链表是tail)
num=0
head=None
rear=None
def __init__(self): #初始化,将头链表和尾链表及链表长度清空
self.len = 30
self.num =0
self.rear =None
self.head =None
self.item = [None] * self.len
@classmethod
def isEmpty(self):
return self.num ==0
@classmethod
def enqueue(self,item):
'''这是向链表头部添加节点的方法'''
if self.isEmpty():
temp = Node(item)
temp.setNext(None)
self.head =temp
self.rear =temp
# 如果链表是空的,表示这是第一个添加的节点
# 那么它就应该是尾结点
else:
temp =Node(item)
temp.setNext(None)
self.rear.setNext(temp)
self.rear = temp
self.num = self.num + 1
@classmethod
def dequeue(self):
'''这是向链表的尾部添加节点的方法'''
#删除链表,始终插入到链表尾部
if self.isEmpty():
pass
else:
t =self.head
if self.head == self.rear:
self.head=None
self.rear=None
else:
self.head = t.getNext()
self.num =self.num -1
return t.getData()
def peek(self):
if self.isEmpty():
raise ValueError
else:
return self.element[self.head]
if __name__ =="__main__":
qu = Queue()
for i in range(1, 21):
qu.enqueue(i)
for i in range(1, 21):
print(qu.dequeue(), end='')
print ()
print(qu.head, qu.rear, end=" ")
输出结果如下
1
None None 2
None None 3
None None 4
None None 5
None None 6
None None 7
None None 8
None None 9
None None 10
None None 11
None None 12
None None 13
None None 14
None None 15
None None 16
None None 17
None None 18
None None 19
None None 20
None None
Process finished with exit code 0
debug一下看看数据和你代码的逻辑
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y