[计算机软件及应用]软件技术基础
数据结构 软件工程 操作系统 数据:十进制、二进制常数 字母、字符 程序段、图形图象、语音 数据元素:数据的基本单位(数据结点),往往对应客 观世界的一个有意义的独立实体,可大可小 数组: A(4)=(123,234,456,789) 字符串:z1=abcdhg 数据库表文件: 每一条记录 二、数据结构的内容 1. 数据元素之间的逻辑结构 2. 数据的存储结构 3. 数据的操作相关算法(提高效率) 以上称为数据结构的三个层次,后继所有结构的讨论,都是从这三方面进行的。 如 “学生表”、“职工表”就是一个数据结构,从逻辑结构来说,是一种线性表结构 数据结构实际上就是研究以下问题: l? 数据元素间的逻辑关系是什么? l? 适宜采用什么样的存储结构? l? 有哪些基本运算?怎样实现? 实际上也就是数据结构的三个层次: 数据的逻辑结构 数据的存储结构 数据操作相关算法集合。 线性结构——linearity的逻辑特征: 有并且仅有一个开始数据元素和一个终点数据元素,所有数据元素都最多只有一个直接前趋和一个直接后继。 例如:线性表就是一个典型的线性结构。 (B)链式存储方法 (C)索引存储方法 ——存储数据元素的同时,附加有索引表,表中每项叫索引项,由关键字和物理地址组成 (D)散列存储方法 ——利用数据元素的关键字,计算出元素的物理存储地址 (1)顺序存储方法 ——即数据的逻辑顺序与存储单元的物理顺序(地址) 一致 (2)链式存储方法 ——数据元素之间的逻辑顺序与物理顺序不要求一致,其逻辑顺序由结点指针表示(链) (3)索引存储方法 ——存储数据元素的同,附加有索引表,表中每项叫索引项,由关键字和物理地址组成 (4)散列存储方法 ——利用数据元素的关键字,计算出元素的物理存储地址 (3)数据的处理与运算 下面的例子可增加对数据结构的感性认识。 【例1】 已知职工档案信息由姓名、性别、出生年月、 职称、部门、工资、婚否等信息组成; 设计一个查询程序要求: ① 能根据指定的姓名进行查询 ② 能按部门进行工资统计汇总 ③ 能检索某职称的职工信息等。 该程序的设计直接依赖于数据行(记录)是怎样组织和存储的,即依赖于这n个数据元素的结构。如果这些数据没有任何规律地存放在计算机中,只能用逐一比较的方法顺序查找。这种查找方式对数量不大的对象或许是可行的,但对于大数据量的查询就难以实行了。 8.2 线性结构 一. 线性结构的特点 线性结构是数据结构中最简单且最常用的一种数据结构。线性结构的基本特点:是数据元素有序并有限。线性结构的逻辑特征是:在其结构中,有且仅有一个无直接前趋而仅有一个直接后继的数据元素为起始元素;有且仅有一个无直接后继而仅有一个直接前趋的数据元素为终点元素;其余均为内部元素,它们各有一个直接前趋和直接后继。因此,线性结构的数据元素可排成一个线性的序列:? ?????????????????? a1,a2,a3,a4,...,an? 其中,a1为起始元素,无直接前趋;an为终点元素,无直接后继;ai为索引号为i的数据元素,只有一个直接前趋和直接后继。 二. 常见的线性结构 线性结构有各种类型,如线性表、堆栈、队列、*数 组、**串等。 1.? 线性表(栈和队列可以认为特殊的线性表) ??? 线性表是由n(n≥0)个相同类型的元素 a1,a2,...,an所构成的有限线性序列,通常表示为(a1,a2,...,an),其中n为线性表的长度。 ai(1≤ i ≤n)是线性表中第 i个序号的数据元素。 ai是抽象表示符号,在不同的情况下含义不同。 例如:一个整数序列: 1,12,123,1234,5321,221,122? 是一个线性表,表中元素ai是一个整数,表长为7。 顺序表的特点如下: l? 物理上相邻的元素在逻辑上也相邻。 l? 可随机存取。 l 存储密度大,空间利用率高。 例3: 在顺序表中,在数据中间插入数据C 见P255 一个线性表 a1,a2,...,an 对应的单链表可以 逻辑示意图表示。其中,h为链表的头指针,用以确 定线性表中第一个元素对应的存储位置。单链表可以 用头指针的名字来命名。链表的终点元素无直接后继,故其指针域为空NULL,在图中用^表示。 栈的特点是:后进先出——LIFO
原创力文档

文档评论(0)