首页 > 编程语言 > 详细

数据结构 python 版本

时间:2019-03-06 13:27:14      阅读:145      评论:0      收藏:0      [点我收藏+]

(一)数据结构综述

  • 常用的数据结构:数组(顺序表)、链表字典(哈希表)、搜索树
  • 图这种数据结构,一般用不到
  • 概念很无聊,直接上代码
  • 书:数据结构高分笔记,王道

 

(二)链表

技术分享图片

 

 

 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等

  1. 这个方法很直接,我们先把一个字符串映射成一个整数

    如: ‘dog’ ------>   ‘d‘*1 + ‘o‘*10 + ‘g‘*100

  2.loading

 

数据结构 python 版本

原文:https://www.cnblogs.com/owenqing/p/10481399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!