您的位置:首页 > 编程语言 > Python开发

【练习册】 2015-08-09 Dlist Queue Stack by python

2015-08-13 11:27 615 查看
以后用python研究算法,用python做一些练习。

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: