2

I am trying to implement queue from clrs book, but it's not working as expected. What is wrong with my code?

Could it be a problem with queue size or enqueue operation?

However, it is very clear that enqueue operation on queue is not working as expected. Here is my code:

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]
Jerrybibo
  • 1,315
  • 1
  • 21
  • 27
chan
  • 23
  • 1
  • 4

1 Answers1

0

can you use "==" for comparision, "=" in python is used for assignment. I assume isFull returns a boolean True or False, depending on the size of the queue, and I also think that it is implemented using circular queue hence this check for tail+1 == head.

def isFull(self): 
    return (self.tail + 1)== self.head
Pavan
  • 108
  • 1
  • 12