(一)数据结构综述
(二)链表
1 class Node(object): 2 def __init__(self,element=None): 3 self.element = element 4 self.next = None 5 6 # 这种创建链表的方法是非常野鸡的,这里主要是为了演示 7 head = Node() 8 n1 = Node(111) 9 n2 = Node(222) 10 n3 = Node(333) 11 head.next = n1 12 n1.next = n2 13 n2.next = n3 14 15 def log_link_list(head): 16 """ 17 打印链表中所有的元素 18 """ 19 n = head.next 20 while n.next is not None: 21 print(n.element) 22 n = n.next 23 print(n.element) 24 25 26 def append(head,element): 27 """ 28 在链表的末尾添加元素 29 """ 30 n = head 31 while n.next is not None: 32 n = n.next 33 node = Node() 34 n.next = node 35 node.element = element 36 37 38 def preappend(head,element): 39 """ 40 链表的头插法 41 """ 42 node = Node(element) 43 node.next = head.next 44 head.next = node 45 46 47 def pop(head): 48 tail = head 49 while tail.next is not None: 50 tail = tail.next 51 # 拿到最后一个元素的 pointer 了 52 n = head 53 while n.next is not tail: 54 n = n.next 55 n.next = None 56 return tail.element 57 58 preappend(head,999) 59 append(head,666) 60 log_link_list(head) 61 62 pop(head) 63 log_link_list(head)
(三) 二叉树
class Tree(object): def __init__(self,element=None): self.element = element self.left = None self.right = None def traversal(self): """ 二叉树的前序,中序,后续遍历 改变 print 的位置就可以 """ if self.left is not None: self.left.traversal() if self.right is not None: self.right.traversal() print(self.element) def reverse(self): """ 交换左右子树 """ self.left, self.right = self.right, self.left if self.left is not None: self.left.reverse() if self.right is not None: self.right.reverse() def test(): # 手动构建二叉树,这种方法非常野鸡。就只有在学习的时候用 # 在实际的应用中,一般都是自动生成的 t = Tree(0) left = Tree(1) right = Tree(2) t.left = left t.right = right t.traversal() if __name__ == ‘__main__‘: test()
(四)字典,又叫哈希表,Map等
如: ‘dog’ ------> ‘d‘*1 + ‘o‘*10 + ‘g‘*100
2.loading
原文:https://www.cnblogs.com/owenqing/p/10481399.html