【练习册】 2015-08-09 Dlist Queue Stack by python
2015-08-13 11:27
615 查看
以后用python研究算法,用python做一些练习。
Queue和Stack python有build in,Dlist没有。
Dlist:
Queue:
Stack:
Queue和Stack python有build in,Dlist没有。
Dlist:
#!/usr/bin/python #coding=utf-8 ''' dual direction list ''' class MyNode: def __init__ (self,Data=None,PreNode=None,NextNode=None): self.Data=Data self.PreNode=PreNode self.NextNode=NextNode class MyDList: def __init__ (self,head): self.head=head def forward_trace(self,node): if node: print(node.Data,end=",") self.forward_trace(node.NextNode) def reverse_trace(self,node): if node: print(node.Data,end=",") self.reverse_trace(node.PreNode) def show(self): print("forward_trace") self.forward_trace(self.head) print("\nreverse_trace") self.reverse_trace(self.find_tear(self.head)) def find_tear(self,node): if node.NextNode == None: return node else: return self.find_tear(node.NextNode) def add_tear(self,node_add): node_tear=self.find_tear(self.head) # print(node_tear) node_tear.NextNode=node_add node_add.PreNode=node_tear if __name__ == '__main__': n0=MyNode(0,None,None) n1=MyNode(1,None,None) n2=MyNode(2,None,None) n3=MyNode(3,None,None) n4=MyNode(4,None,None) n5=MyNode(5,None,None) dlist=MyDList(n0) dlist.add_tear(n1) dlist.add_tear(n2) dlist.add_tear(n3) dlist.add_tear(n4) dlist.add_tear(n5) dlist.show()
Queue:
#!/usr/bin/python # coding=utf-8 ''' ' stack ''' class Queue: def __init__(self, size=16): self.stack = [] self.size = size self.length=0 def isEmpty(self): if len(self.stack) == 0 : return True else: return False def isFull(self): if len(self.stack) == self.size: return True else: return False def add(self, obj): if self.isFull(): raise Exception("QueueOverFlow") else: self.stack.append(obj) def delete(self): if self.isEmpty(): raise Exception("QueueIsEmpty") else: self.stack=self.stack[1:len(self.stack)] def show(self): print(self.stack) q = Queue() q.show() q.add(1) q.add(2) q.add(3) q.show() q.delete() q.delete() q.delete() q.show()
Stack:
#!/usr/bin/python #coding=utf-8 class Stack: def __init__(self, size=16): self.stack = [] self.size = size self.length=0 def isEmpty(self): if len(self.stack) == 0 : return True else: return False def isFull(self): if len(self.stack) == self.size: return True else: return False def add(self, obj): if self.isFull(): raise Exception("StackOverFlow") else: self.stack.append(obj) def delete(self): if self.isEmpty(): raise Exception("StackIsEmpty") else: self.stack=self.stack[0:len(self.stack)-1] def show(self): print(self.stack) if __name__ == '__main__': s = Stack(3) s.add(1) s.add(2) s.show() s.delete() s.show() s.add(6) s.show() s.delete() s.delete() s.show()
相关文章推荐
- 用PYTHON写一个应用程序并发布exe
- 全排列
- Python模块安装方法
- python vim 的自动缩进配置(成功)
- 【转载】python模块之poplib: 用pop3收取邮件
- python装饰器 备份
- nltk
- python字符串格式化
- nltk对中文进行处理和分析
- python中函数接收多余参数
- python模块
- sublime配置python中文乱码的问题
- python os
- 【练习册】 2015-08-12 AVL by python
- python chardet
- python字符编码
- Python 之 cPickle 实现 文件存取
- 在Python中使用正则表达式的方法
- 零基础学python-2.16 列表解析
- 零基础学python-2.16 列表解析