python中的隊列和棧

在一個basicds模塊裏用實現了兩個類:Stack和Queue及其各自所支持的操作。

隊列是以排隊的形式先進先出的序列集,棧是後進先出的序列集。

以下是模塊basicds模塊源碼:
basicds.py
01 class Stack(object) :
02     def __init__(self) :
03         self.stack = []
04     
05     def push(self, item) :
06         self.stack.append(item)
07     
08     def pop(self) :
09         if self.stack != [] :
10             return self.stack.pop(-1)
11         else :
12             return None
13     
14     def top(self) :
15         if self.stack != [] :
16             return self.stack[-1]
17         else :
18             return None
19     
20     def length(self) :
21         return len(self.stack)
22         
23     def isempty(self) :
24         return self.stack == []
25         
26 
27 class Queue(object) :
28     def __init__(self) :
29         self.queue = []
30     
31     def enqueue(self, item) :
32         self.queue.append(item)
33         
34     def dequeue(self) :
35         if self.queue != [] :
36             return self.queue.pop(0)
37         else :
38             return None
39             
40     def head(self) :
41         if self.queue != [] :
42             return self.queue[0]
43         else :
44             return None
45     
46     def tail(self) :
47         if self.queue != [] :
48             return self.queue[-1]
49         else :
50             return None
51     
52     def length(self) :
53         return len(self.queue)
54         
55     def isempty(self) :
56         return self.queue == []

代碼很簡單,不解釋不註釋,呵呵~
使用例程:
注意basicds.py必須放在Python解釋器可以搜索的路徑裏(使用import時會搜索模塊),這裏basicds.py和example.py在同一個目錄下,屬於Python解釋器可搜索範圍。
example.py
01 #!/usr/bin/env python
02 
03 import basicds
04 
05 s = basicds.Stack()    # get a stack
06 q = basicds.Queue()    # get a queue
07 
08 
09 for i in range(10) :
10     s.push(i)
11     q.enqueue(i)
12 
13 # stack s
14 print 'length of stack s is %d' %s.length()
15 print 'top of stack s is %d' %s.top()
16 print 'pop an item %d from stack s' %s.pop()
17 print 'now, top of stack s is %d' %s.top()
18 
19 print '\n'
20 
21 #queue q
22 print 'length of queue q is %d' %q.length()
23 print 'head of queue q is %d' %q.head()
24 print 'tail of queue q is %d' %q.tail()
25 print 'del an item %d from queue q' %q.dequeue()
26 print 'now, head of queue q is %d' %q.head()
27 print 'tail of queue q is %d' %q.tail()

運行結果:
用Python實現基本數據結構——棧與隊列 - Jesse - ONE PIECE
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章