我试图从clrs书中实现队列,但它没有按预期工作?我的代码有什么问题

时间:2017-01-13 15:18:50

标签: python data-structures queue clrs

我正在尝试从clrs book实现队列,但它没有按预期工作。我的代码出了什么问题?

队列大小或入队操作会出现问题吗?

但是,很清楚队列上的排队操作没有按预期工作。这是我的代码:

class Queue:

    def __init__(self,size):
        self.queue=[None]*(size+1)
        self.tail=1
        self.head=1
        self.size=size

    def enqueue(self,item):
        #error checking 
        if(self.isFull()):
            print("queue overflows,queue full")
            return
        #--------------------
        self.queue[self.tail]=item
        if(self.tail==self.size):
            self.tail=1
        else:
            self.tail=self.tail+1

    def dequeue(self):

        #error checking 
        if(self.isEmpty()):
            print("queue underflows,queue empty")
            return
        #--------------------
        x=self.queue[self.head]
        if(self.head==self.size):
            self.head=1
        else:
            self.head=self.head+1
        return x

    def isFull(self):
        return (self.tail + 1)= self.head

    def isEmpty(self):
        return self.head==self.tail

    def first_person(self):
        if(self.isEmpty()):
            return ("queue empty")
        return self.queue[self.head]

1 个答案:

答案 0 :(得分:1)

可以使用“==”进行比较,python中的“=”用于赋值。 我假设isFull返回一个布尔值True或False,具体取决于队列的大小,我也认为它是使用循环队列实现的,因此检查tail + 1 == head。

def isFull(self): 
    return (self.tail + 1)== self.head