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

来源:互联网 发布:哈奇森效应 知乎 编辑:程序博客网 时间:2024/05/16 17:50

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


0 0