用python实现基本数据结构栈与队列

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7

用 Python 实现基本数据结构——栈与队列 最近学习《算法导论》 ,看了栈与队列,觉得用 C 实现 没意思 (以前实现过,不过不能通用 ),遂用最近在研究的

Python 实现这两个基本的数据结构! 在一个 basicds 模块里用实现了两个类: Stack 和 Queue 及 其各自所支持的操作,写得比较笨: -) 其实完全可以写个 基类 List ,然后从 List 中派生出类 Stack 和 Queue ,这样做 可以避免一些重复代码,因为两个类有很多类似的方法,比 如 isempty, length 等等。(当然这些改进还是等待下一版再 做吧,: -)以下是模块 basicds 模块源码:

basicds.py

Python 语言 : 高亮代码由发芽网提供

01 class Stack(object) :

02 def __init__(self) : 03 self.stack = [] 04 05 def push(self, item) : 06 self.stack.append(it em)

08 def

pop(self) :

30

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 = []

51

31 def enqueue(self, item) : 32

self.queue.append(ite m) 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 52

def length(self) :

07

08

return self.queue == [] 代码很简单, 不解释不注

释,呵呵〜 使用例程: 注意 basicds.py 必须放在 Python 解释器可以搜索的路径里

使用 import 时会搜索模块) ,这里 basicds.py 和 example.py 在同一个目录下,属于 Python 解释器可搜索范 围。

example.py

Python 语言 : 高亮代码由发芽网提供

01 #!/usr/bin/env python 02 03 import basicds 04

09 for i in range(10) :

53 return len(self.queue) 54 55 def

isempty(self) : 10

s.push(i)

56 05 s = basicds.Stack()

# get a stack 06 q = basicds.Queue()

# get a queue

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() 运行结果:

11

q.enqueue(i )

相关文档
最新文档