线性表 数组链表
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。即在计算机的缓存,内存,硬盘中如何组织管理数据的。重点在结构上,是按照什么结构来组织管理数据。
数据结构分为:
- 逻辑结构 :思想上的结构–>线性表(数组,链表),图,树,栈,队列
- 物理结构 :真实结构–>紧密结构(顺序结构),跳转结构(链式结构)
线性表
线性表的逻辑结构如图所示:
线性表是n个类型相同数据元素的有限序列,通常记作(a0,a1,,,ai-1,ai,ai+1,,,,,an-1)
。
特点
- 相同数据类型
在线性表的定义中,我们看到从a0到an-1的n个数据元素是具有相同属件的亓素。
例如都是数字(1,2,3,4,5,6),也可以是宇符(A,B,…,Z),也可以是具有更复杂结构的数据元素,例如用户、商品等。
相同数据类型意味着在内存中存储时,每个元素会占用相同的内存空间,便于后续的查询定位。
- 序列(顺序性)
线性表的相邻数据元素之间存在若序偶关系。
即ai-1是ai的直接前驱,则ai是ai-1的直接后续;同时ai又是ai+1的直接前驱,ai+1是ai的直接后续。
唯一没有直接前驱的元素a0 一端称为表头,唯一没有后续的元素an-1一端称为表尾。
除了表头和表尾元素外,任何一个元素都有且仅有一个直接前驱和直接后继。
- 有限
线件表中数据元素的个数n定义为线性表的长度, n是个有限值。
当n=0时线性表为空表。
在非空的线性表中每个数据元索在线性表中都有唯一确定的序号,例如a0的序号是0 ,ai的序号是i。
在一个具有n>0个数据元素的线性表中,数据元素序号的范围是[0, n-1]。
线性表的逻辑结构和物理结构
线性表逻辑结构,如果对应的真实结构的紧密结构—>典型就是数组
例如银行排队中在柜台前排队
数据 | data1 | data2 | data3 | data4 |
---|---|---|---|---|
索引 | 0 | 1 | 2 | 3 |
地址 | 1000+4*0 | 1000+4*1 | 1000+4*2 | 1000+4*3 |
-
优点:寻址快,可直接查找元素块
-
缺点:删除和增加元素效率低,会影响操作元素后面的所有元素
线性表逻辑结构,如果对应的真实结构的跳转结构—>典型就是链表:
例如银行排队中的叫号模式
单向链表
双向链表
循环链表
- 优点:删除、插入元素效率高,直接修改前后元素中的地址部分
- 缺点:查询元素效率低