fifo queue

drochom drochom at googlemail.com
Sun Mar 18 18:32:40 EDT 2007


hi,

how would u improve this code?

class queue:
    def __init__(self, size=8):
        self.space = size
        self.data = [None]*self.space
        self.head = 0
        self.tail = 0
        self.len = 0
    def __len__(self): return self.len
    def push(self, x):
        if self.len==self.space:
            self.data.extend( self.data[:self.tail] )
            self.data.extend( [None]* (self.space-self.tail) )
            self.tail+=self.space
            self.space*=2
        self.data[self.tail]=x
        self.tail+=1
        if self.tail==self.space:
            self.tail=0
        self.len+=1
    def pop(self):
        if self.len:
            elem = self.data[self.head]
            self.head+=1
            if self.head==self.space:
                self.head=0
            return elem
    def top(self):
        if self.len==0:
            raise Exception, 'queue is empty'
        return self.data[self.head]

thx in adv.




More information about the Python-list mailing list