Python 带表头结点及表尾结点指针的连接表技术

问题:输出头部和尾部节点的时候,一直显示的是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