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

以后用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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值