数据结构 = “数据元素” + “元素之间的关系”
程序 = 数据结构 + 算法
数据结构是一种数据组织、管理和存储的格式,它可以帮助我们实现对数据高效地访问和修改。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,可以体现数据值之间的关系。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 , 数据结构往往同高效的算法有关。
Python内置数据结构:Python给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫做Python的内置数据结构,是Python已经封装好的高级数据结构,他们不再是基本数据类型(int、float、bool、string)了,而是对这些基本数据类型的封装。比如列表(list)、元组(tuple)、字典(dict)、集合(set)。
Python扩展数据结构:有些数据组织方式,Python系统里面没有直接定义,需要我们自己去定义实现这些数据的组织方式,这些数据组织方式称之为Python的扩展数据结构,比如栈,队列等。
抽象数据类型ADT(Abstract Data Type):抽象数据类型(ADT)的含义是指一个数学模型以及定义在此数学模型上的一组操作。即把数据类型和数据类型上的运算捆在一起,进行封装。引入抽象数据类型的目的是把数据类型的表示和数据类型上运算的实现与这些数据类型和运算在程序中的引用隔开,使它们相互独立。
一、基本专业术语
- 数据(data):所有能被计算机接受并处理的被操作对象的集合,数据是一个抽象的概念,将其进行分类后得到程序设计语言中的基本类型。如:int,float,char等。
- 数据项(data item):是数据中的最小单位;也被称为域(field),代表数据表中的字段
- 数据元素(data element):由若干个数据项组成的数据基本单元,也称结点,元素,顶点或记录
- 数据对象(data object):由性质相同的数据元素组成的集合,是数据的一个子集。举个栗子,整数的数据对象{-3, -2, -1, 0, 1, 2, 3}
- 数据结构(data structure):由互相之间存在着一种或多种关系的数据元素组成的集合;这些数据元素之间的关系称为结构
二、数据结构类型:
-
线性结构:数据结构中的元素存在一对一的相互关系,表中各个结点具有线性关系;
- 线性结构是非空集
- 线性结构所有结点都最多只有一个直接前驱结点和一个直接后继结点
- 典型的线性结构 : 栈、队列
-
非线性结构
- 树形结构:数据结构中的元素存在一对多的相互关系;
- 图形结构:数据结构中的元素存在多对多的相互关系;
- 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
三、常用的数据结构
- 数组(Array)
- 栈( Stack)
- 队列(Queue)
- 链表( Linked List)
- 树( Tree)
- 图(Graph)
- 堆(Heap)
- 哈希表/散列表(Hash)
四、 数据结构与算法的区别
- 数据结构和算法都是为了提高程序的运行效率;
- 数据结构只是静态的描述了数据元素之间的关系;
- 高效的程序需要在数据结构的基础上设计和选择算法;
- 算法是为了解决实际问题而设计的,数据结构是算法需要处理问题的载体;
五、 内存的存储结构
内存是以字节为基本存储单位的(1024b = 1kb) , 每个基本存储空间都有自己的地址。
整形(int) : 占 4个字节
字符(char): 占1个字节 . 单个字符“a”占1个字节, 字符串“abc”占3个字节