数据结构 顺序表实现优先队列 回顾练习

 1 #!/usr/bin/env python
 2 
 3 class QueueUnderflow(ValueError):
 4         pass
 5 
 6 class PrioQue(object):
 7         def __init__(self, elems=[]):
 8                 #list can be change locally, so list it
 9                 self.elems = list(elems)
10                 self.elems.sort(reverse=True)
11 
12         def is_empty(self):
13                 return self.elems == None
14 
15         def peek(self):
16                 if self.is_empty():
17                         raise QueueUnderflow
18                 return self.elems[-1]
19 
20         def dequeue(self):
21                 if self.is_empty():
22                         raise QueueUnderflow
23                 return self.elems.pop()
24 
25         def enqueue(self, elem):
26                 i = len(self.elems) - 1
27                 while i>=0:
28                         if self.elems[i] <= elem:
29                                 i -= 1
30                         else:
31                                 break
32                 self.elems.insert(i+1, elem)
33 
34 if __name__ == '__main__':
35         pq = PrioQue(elems=[6,4,3,8,5,1,2,0,9])
36         print(pq.elems)
37         pq.enqueue(7)
38         print(pq.elems)
原文地址:https://www.cnblogs.com/xautxuqiang/p/6418868.html