1 #!/usr/bin/env python2 #-*-coding:utf-8-*-3 4 #Author:minion-xu5 #List Implementation Priority Queue6 7 classListpriqueuevalueerror (valueerror):8 Pass9 Ten classList_pri_queue (object): One def __init__(Self, elems = []): ASelf._elems =list (elems) - #sort from large to small, with lowest end value, but highest priority, easy eject and efficiency O (1) -Self._elems.sort (reverse=True) the - #determine if the queue is empty - defIs_empty (self): - returnSelf._elems is [] + - #View Highest priority O (1) + defPeek (self): A ifself.is_empty (): at RaiseListpriqueuevalueerror ("In pop") - returnSelf._elems[-1] - - #pop-up highest priority O (1) - defdequeue (self): - ifself.is_empty (): in RaiseListpriqueuevalueerror ("In pop") - returnSelf._elems.pop () to + #Queue New Priority O (n) - defEnqueue (Self, e): thei = Len (self._elems)-1 * whilei>=0: $ ifSelf._elems[i] <e:Panax NotoginsengI-= 1 - Else: the Break +Self._elems.insert (i+1, E) A the if __name__=="__main__": +L = List_pri_queue ([4,6,1,3,9,7,2,8]) - Print(L._elems) $ Print(L.peek ()) $ L.dequeue () - Print(L._elems) -L.enqueue (5) the Print(L._elems) -L.enqueue (1)Wuyi Print(L._elems)
Data structure: Priority queue based on list implementation (Python version)