分享

Python笔记

 豆芽爱尚阅 2014-07-11

 

目前只实现了三种,栈、队列和二叉树,哪天得空继续补吧~

毕设忙晕了~~

 

1.栈

  1. #栈   
  2. class Stack:  
  3.     def __init__(self,size = 16):  
  4.         self.stack = []  
  5.         self.size = size  
  6.         self.top = -1  
  7.     def setSize(self, size):  
  8.         self.size = size  
  9.     def isEmpty(self):  
  10.         if self.top == -1:  
  11.             return True  
  12.         else:  
  13.             return False  
  14.     def isFull(self):  
  15.         if self.top +1 == self.size:  
  16.             return True  
  17.         else:  
  18.             return False  
  19.     def top(self):  
  20.         if self.isEmpty():  
  21.             raise Exception("StackIsEmpty")  
  22.         else:  
  23.             return self.stack[self.top]  
  24.     def push(self,obj):  
  25.         if self.isFull():  
  26.             raise Exception("StackOverFlow")  
  27.         else:  
  28.             self.stack.append(obj)  
  29.             self.top +=1  
  30.     def pop(self):  
  31.         if self.isEmpty():  
  32.             raise Exception("StackIsEmpty")  
  33.         else:  
  34.             self.top -= 1  
  35.             return self.stack.pop()  
  36.     def show(self):  
  37.         print(self.stack)  
  38.   
  39. s = Stack(5)  
  40. s.push(1)  
  41. s.push(2)  
  42. s.push(3)  
  43. s.push(4)  
  44. s.push(5)  
  45. s.show()  
  46. s.pop()  
  47. s.show()  
  48. s.push(6)  
  49. s.show()  

执行:

 

 

2.队列

  1. #队列   
  2. class Queue:  
  3.     def __init__(self,size = 16):  
  4.         self.queue = []  
  5.         self.size = size  
  6.         self.front = 0  
  7.         self.rear = 0  
  8.     def isEmpty(self):  
  9.         return self.rear == 0  
  10.     def isFull(self):  
  11.         if (self.front - self.rear +1) == self.size:  
  12.             return True  
  13.         else:  
  14.             return False  
  15.     def first(self):  
  16.         if self.isEmpty():  
  17.             raise Exception("QueueIsEmpty")  
  18.         else:  
  19.             return self.queue[self.front]  
  20.     def last(self):  
  21.         if self.isEmpty():  
  22.             raise Exception("QueueIsEmpty")  
  23.         else:  
  24.             return self.queue[self.rear]  
  25.     def add(self,obj):  
  26.         if self.isFull():  
  27.             raise Exception("QueueOverFlow")  
  28.         else:  
  29.             self.queue.append(obj)  
  30.             self.rear += 1  
  31.     def delete(self):  
  32.         if self.isEmpty():  
  33.             raise Exception("QueueIsEmpty")  
  34.         else:  
  35.             self.rear -=1  
  36.             return self.queue.pop(0)  
  37.     def show(self):  
  38.         print(self.queue)  
  39. q = Queue(3)  
  40. q.add(1)  
  41. q.add(2)  
  42. q.show()  
  43. q.delete()  
  44. q.show()  

 

3.二叉树

  1. #二叉树   
  2. class BinaryTreeNode:  
  3.     def __init__(self,data,left,right):  
  4.         self.left = left  
  5.         self.data = data  
  6.         self.right = right  
  7. class BinaryTree:  
  8.     def __init__(self):  
  9.         self.root = None  
  10.     def makeTree(self,data,left,right):  
  11.         self.root = BinaryTreeNode(data,left,right)  
  12.         #left.root = right.root = None   
  13.     def isEmpty(self):  
  14.         if self.root is None:  
  15.             return True  
  16.         else:  
  17.             return False  
  18.     def preOrder(self,r):  
  19.         if r.root is not None:  
  20.             print(r.root.data)  
  21.             if r.root.left is not None:  
  22.                 self.preOrder(r.root.left)  
  23.             if r.root.right is not None:  
  24.                 self.preOrder(r.root.right)  
  25.     def inOrder(self,r):  
  26.         if r.root is not None:  
  27.             if r.root.left is not None:  
  28.                 self.inOrder(r.root.left)  
  29.             print(r.root.data)  
  30.             if r.root.right is not None:  
  31.                 self.inOrder(r.root.right)  
  32.     def postOrder(self,r):  
  33.         if r.root is not None:  
  34.             if r.root.left is not None:  
  35.                 self.preOrder(r.root.left)  
  36.             if r.root.right is not None:  
  37.                 self.preOrder(r.root.right)  
  38.             print(r.root.data)  
  39.     def levelOrder(self,a):  
  40.         q = Queue()  
  41.         r = a  
  42.         while r is not None:  
  43.             print(r.root.data)  
  44.             if r.root.left is not None:  
  45.                 q.add(r.root.left)  
  46.             if r.root.right is not None:  
  47.                 q.add(r.root.right)  
  48.             if q.isEmpty():  
  49.                 print("empty")  
  50.                 r = None  
  51.             else:  
  52.                 r = q.delete()  
  53.               
  54.   
  55.   
  56. r = BinaryTree()  
  57. ra = BinaryTree()  
  58. ra.makeTree(2,None,None)  
  59. rb = BinaryTree()  
  60. rb.makeTree(3,None,None)  
  61. r.makeTree(1,ra,rb)  
  62. print("前序遍历")  
  63. r.preOrder(r)  
  64. print("中序遍历")  
  65. r.inOrder(r)  
  66. print("后序遍历")  
  67. r.postOrder(r)  
  68. print("层级遍历")  
  69. r.levelOrder(r)  

 

运行结果:

 

 

后续实现了会慢慢补上~~旧的也会不断改进,希望大家多多给意见~~

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多