1.5 数据结构基础(一)
2014-02-10 11:55
225 查看
1.5.1 逻辑结构:线性表、树和图
线性结构中的数据有前驱-后继关系;树中的数据有父子关系和由此产生的层次关
系;图中的任何两个元素都可以有关系,它在三者中是最广泛的。
1.5.2 逻辑结构的物理实现
最简单的逻辑结构是线性结构,它有两种物理结构:数组和链表,前者是连续
的,后者是不连续的。前者通过绝对位置定位,地址是下标的函数;后者通过相对位
置定位,地址依赖于其他元素。
数组(array) 数组采取绝对定位,所有元素的物理位置是连续的。
链表(linked list) 链表采用相对定位,每个元素保存下一个元素的位置。
二叉树可以用链式存储。
二叉树也可以用数组存储,从根开始,每层自左向右编号为1,2,3⋯,如图1.9。
除了结点1外,每个结点i的父亲是i/2,左儿子是2i,右儿子是2i+1。同样是以数组作为
物理结构,这里我们把它理解为了一棵二叉树。
图有两种常用的表示法:邻接矩阵(adjacency matrix) 和邻接表(adjacency list)
边比较少的图称为稀疏图,经常用邻接表表示;因为空间占用小而且很多算法的
时间效率也较高,而稠密图或者结点数较少的图经常用邻接矩阵表示,基于邻接矩阵
的算法常常简单、容易记忆,且对这类图特别有效。
1.5.3 外部特性和内部结构
不管是物理结构还是逻辑结构,数据结构的某些属性可以被外界所感知,而另外
一些属性却是不可见的。换句话说,数据结构包含外部特性和内部结构两个方面。外
部特性决定了它将如何被使用,而内部结构决定了它的原理和具体实现。
线性结构中的数据有前驱-后继关系;树中的数据有父子关系和由此产生的层次关
系;图中的任何两个元素都可以有关系,它在三者中是最广泛的。
1.5.2 逻辑结构的物理实现
最简单的逻辑结构是线性结构,它有两种物理结构:数组和链表,前者是连续
的,后者是不连续的。前者通过绝对位置定位,地址是下标的函数;后者通过相对位
置定位,地址依赖于其他元素。
数组(array) 数组采取绝对定位,所有元素的物理位置是连续的。
链表(linked list) 链表采用相对定位,每个元素保存下一个元素的位置。
二叉树可以用链式存储。
二叉树也可以用数组存储,从根开始,每层自左向右编号为1,2,3⋯,如图1.9。
除了结点1外,每个结点i的父亲是i/2,左儿子是2i,右儿子是2i+1。同样是以数组作为
物理结构,这里我们把它理解为了一棵二叉树。
图有两种常用的表示法:邻接矩阵(adjacency matrix) 和邻接表(adjacency list)
边比较少的图称为稀疏图,经常用邻接表表示;因为空间占用小而且很多算法的
时间效率也较高,而稠密图或者结点数较少的图经常用邻接矩阵表示,基于邻接矩阵
的算法常常简单、容易记忆,且对这类图特别有效。
1.5.3 外部特性和内部结构
不管是物理结构还是逻辑结构,数据结构的某些属性可以被外界所感知,而另外
一些属性却是不可见的。换句话说,数据结构包含外部特性和内部结构两个方面。外
部特性决定了它将如何被使用,而内部结构决定了它的原理和具体实现。
相关文章推荐
- 【数据结构】简单查找和排序
- java数据结构和算法学习之汉诺塔示例
- 排序算法 - 数据结构和算法87
- Pat(Advanced Level)Practice--1005(Spell It Right)
- 数据结构与算法之——线性表的链式存储结构
- 算法导论笔记(2):几种基本数据结构
- 【线段树(线段离散化+lazy)】poj 2528 Mayor's posters
- 基础加强____【哈希表数据结构】【深入理解hashcode & equals】
- Redisbook学习笔记(2)内存映射数据结构(1)压缩列表
- 【线段树(lazy)】poj 2777 Count Color
- nginx 源码学习(四) 基本数据结构 ngx_queue_t
- spl提供的数据结构
- 表达式求值
- 数据结构与算法之——线性表的顺序存储结构
- 基础数据结构——顺序线性表
- 电子书下载:Delphi 算法与数据结构
- 数据结构与算法之——高斯算法
- 浅谈算法和数据结构: 四 快速排序
- 散列表查找的代码实现 - 数据结构和算法86
- AbiWord 中Piece Table 数据结构的实现----AbiWord Documentation