7、Python数据结构

7-1、数据结构概述

1、什么是数据结构?
一个程序里面必然会有数据存在,同样的,一个或几个数据要组织起来,可以有不同的组织方式,也就是不同的存储方式;
不同的组织方式就是不同的结构,我们把这些数据组织在一起的结构称之为数据的结构,也就是数据结构。
 
2、数据结构的类型:
例:
 
3、数据结构与算法的关系:
数据结构常跟算法合在一起;
数据结构是数据的组织方式,就是数据存储的方式,也就是说,数据结构是静态的;
算法是指运算方法,通俗的讲,算法就是思维;
我们编写的程序,是动态的,我们需要将数据进行计算;计算的方法很多,不同的运算方法叫做不同的算法;
所以,数据结构是算法的基础,但相同的数据结构运用不同的算法拥有不同的效率;
 
7-2、栈
1、什么是栈?
栈是一种数据结构,这种数据结构在python中不是内置数据结构,属于扩展数据结构;
栈的特点:
                 栈相当于一端开口一端封闭的容器,数据A可以存储在栈里面,把数据A移动到栈里面的过程叫进栈,也叫压栈;
                 对应的把栈里面的数据移出来就叫做出栈;
                 实际上堆栈就是是叠盘子,所以栈的操作应该满足“先进后出”原则;
                 栈顶位置始终指向新的栈顶,也就是说,只有栈顶才能被操作;
 
2、python中栈的实现:
 
7-3、队列
1、什么是队列?
队列也是一种数据结构,是一种扩展的数据结构;
优点:
          首先,队列相当于两端都开的容器,
          但是一端只能进行删除操作,不能进行插入操作,而另一端只能进行插入操作,不能进行删除操作;
          进行插入操作的这端叫队尾,进行删除操作的这端叫做队首;
          数据是从队尾进队首出的;
 
2、python中队列的实现:
 
7-4、树
1、什么是树?
树是一种非线性的数据结构,具有非常高的层次性;
利用树来存储数据,能够使用公有元素进行存储,能够很大程度上节约存储空间;
树的定义是:首先只有一个根节点,其次他有N个不相交子集,每个子集为一棵子树;
树的图示:
              
 
2、什么是二叉树?
二叉树是一种特殊的树,二叉树要么为空树,要么为左右两个不相交的子树组成;
二叉树是有序树,即使只有一个子树,也需要区分该子树是左子树还是右子数;
二叉树每个节点的度不能大于2,可以取0,1,2;
二叉树的存储方式有两种,一种是顺序存储,一种是链式存储;
顺序存储采用一维数组的存储方式,链式存储中,采用链表的存储方式,通常分为三部分:数据域、左孩子链域、右孩子链域;
 
3、python中树和二叉树的实现:
 
7-5、链表
1、什么是链表?
链表是一种数据结构,是一种非连续、非顺序的存储方式
链表由一系列节点组成,每个节点包括两部分:一部分是数据域,另一部分是指向下一节点的指针域
链表可以分成单向链表、单向循环链表、双向链表、双向循环链表
 
2、python中链表的实现:
 
 7-6、bitmap
1、什么是bitmap?
bitmap也是一种数据结构;
bit指的是,map指的是,bitmap也叫做位图
这种数据结构的存储简单来说就是把原来的数转化成二进制来存储,每个位占一个存储单元
我们操作bitmap中的数据也就相当于操作一个位
bitmap数据结构的优点是可以很好实现排序
如上所示是数字5的位图,python中的位图一般是32位,而最高位是符号位,所以实际是31位;
利用python中的左移和右移就可以实现位运算了;
 
2、实现bitmap:
 
 7-7、图
1、什么是图?
图是一种数据结构;
图可以简单的理解为一个关系网络,该网络中有N多个节点,每个节点上存储着一个数据
数据之间可以用线把关联的节点连起来的方式表示
其中,有的数据关系是有方向的,比如数据A-->数据B,其关系只能从A到B,不能从B到A;
如果数据之间的关系是有方向的,这个数据关系用弧线表示;
有的数据关系是没有方向的,A--B表示既可以A到B关联,也可以B到A关联;
                                          
 
2、图的实现:
例子:实现如下所示的图:
 
 
 
posted @ 2016-03-19 09:59  huanwu1990  阅读(454)  评论(0)    收藏  举报