数据结构--02--真实结构--抽象结构
真实结构
- 在内存中真实存在的, 用来存放多个数据的内存结构。
线性表之顺序表(或静态数据结构):数组(Array)、ArrayList
线性表之链表(或动态数据结构):Linked List
抽象结构
- 在内存中并不存在此结构, 由程序员利用数组/链表封装成的结构
栈(Stack)
- 是限制仅在表的一端进行插入和删除运算的线性表
栈的修改原则:
栈的修改是按先进后出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。
栈的结构原理:
队列(Queue)
- 是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
栈的修改原则:
队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许"加塞"),每次离开的成员总是队列头上的(不允许中途离队),即当前"最老的"成员离队。
队列的结构原理:
树:
- 对大量的输入数据,链表的线性访问时间太慢,不宜使用。这里是另外一种重要的数据结构----树,其大部分时间可以保证操作的运行平均时间复杂度为O(logN)
计算机世界的树
专有名词
树
二叉树
图
- 图(Graph)结构是一种非线性的数据结构,图在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。图结构比树结构复杂的非线性结构。
图结构构成
1.顶点(vertex):图中的数据元素,如图一。
2.边(edge):图中连接这些顶点的线,如图一。
- 所有的顶点构成一个顶点集合,所有的边构成边的集合,一个完整的图结构就是由顶点集合和边集合组成。
图结构在数学上记为以下形式:
G=(V,E) 或者 G=(V(G),E(G))
- 其中V(G)表示图结构所有顶点的集合,顶点可以用不同的数字或者字母来表示。E(G)是图结构中所有边的集合,每条边由所连接的两个顶点来表示。
- 图结构中顶点集合V(G)不能为空,必须包含一个顶点,而图结构边集合可以为空,表示没有边。
其它
-
散列表(Hash)
-
堆(Heap)