数据结构与常用算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在计算机中通常作为整体处理,也称为记录 一个数据元素由若干个数据项组成
是数据的子集
武汉科技大学计算机科学与技术学院
(3)数据项:数据元素的最小单位。
(4)数据对象:相同性质数据元素的集合。
7.1.1 基本术语
数据对象、数据元素与数据项
一列整数{2,3,5,-3,8,12} 若干列整数 一个学生:学号、姓名、性别、入学成绩。。。 一个学生表:若干条学生记录
例如家庭成员的数据结构可以表示成B=(D, R),其中 D={父亲,儿子,女儿},R={<父亲,儿子>,<父亲, 女儿>}。
7.1.2 数据结构
1. 数据的逻辑结构
通常有下面3种基本结构:
Байду номын сангаас
线性
①线性结构:结构中数据元素之 树形 间存在一个对一个的关系。 ②树形结构:结构中数据元素之 间存在一个对多个的关系。 ③图形结构或网状结构:结构中 数据元素之间存在多个对多个的 图形 关系。
1 2 i n a1 a2 … ai …
武汉科技大学计算机科学与技术学院 an ADR(a1)+(n-1)k
ADR(a1) ADR(a1)+k ADR(a1)+(i-1)k
2. 顺序表的基本运算
序号 数据元素 (1)顺序表的插入( ai 前插入 x)
存储地址
1 n个)元素开始,直到 a1 ADR(a1) 移动元素:从最后一个(即第 2 a2 第 i 个元素之间共 n-i+1 个元素依次向后移动一个位 ADR(a1)+k 置 …
7.1 数据结构的基本概念 7.2 线性表及其存储结构 7.3 栈和队列 7.4 树与二叉树 7.5 查找算法 7.6 排序算法
第7章 数据结构与常用算法
7.1 数据结构的基本概念
7.1.1 基本术语
(1)数据:能被计算机识别、存储和加工处 理的符号的总称。
计算机中可以操作的对象
(2)数据元素:数据的基本单位。
指反映数据元素之间逻辑关系的数据结构。 两个要素:
一是数据元素的集合,通常记为D; 二是D上的二元关系,它反映了D中各数据元素之间的 前驱与后继关系,通常记为R。 一个数据结构可以表示成B=(D, R),其中B表示数据 结构。
通常把数据元素之间的这种固有的关系,简单地 用前驱与后继关系来描述。
线性表的数据元素,通常也称为节点。 数据元素在线性表中的位置只取决于它们自 己的序号。 线性表中节点的个数 n 称为线性表的长度。 当 n=0 时,称为空表。
7.2.2 线性表的顺序存储及其运算
1. 线性表的顺序存储(顺序表)
①线性表中的所有元素所占的存储空间是连续的; ②线性表中各数据元素在存储空间中是按逻辑顺 序依次存放的。 高级语言中,常用“一维数组” a(1:m)表示这 种存储结构序号 数据元素 存储地址
数据结构主要研究和讨论3个方面的问题:
①数据集合中,各种数据元素之间所固有的逻辑 关系,即数据的逻辑结构; ②在对数据进行处理时,各数据元素在计算机中 的存储关系,即数据的存储结构; ③对各种数据结构进行的运算,其中常用的有检 索、插入、删除、排序等
7.1.2 数据结构
1. 数据的逻辑结构
aj
aj+1( j: n~i )
插入新元素:将新元素 x 插入到第 … i 个位置
x
i
ai
ADR(a1)+(i-1)k ADR(a1)+(n-1)k
ai
更新长度:n+1n
当
n
an
n=m 时,不能再插入,否则会“上溢”; 所以插入前要检查是否会“上溢”。
2. 顺序表的基本运算
7.2.3 线性表的链式存储及其运算
1. 线性表的链式存储
通过每个节点的指针域将n个节点按其逻辑顺序 连接在一起而构成的数据存储结构,称为链式存 储结构。
数据域 指针域
data next 对线性链表而言,它不要求逻辑上相邻的元素在 物理位置上也相邻,其存储单元既可以是连续的, 也可以是不连续的,甚至可以零散分布在存储空 间中的任何位置上。
return
7.2 线性表及其存储结构
7.2.1 线性表的基本概念
通常,线性表是由n(n≥0)个数据元素 a1, a2, …, an组成的一个有限序列。
①存在唯一的一个被称为“第一个”的数据元素; ②存在唯一的一个被称为“最后一个”的数据元 素; ③除了第一个之外,表中的每个数据元素均只有 一个前驱; ④除了最后一个之外,表中的每个数据元素均只 有一个后继。
更新长度:n-1n
n=0 时不能再删除, 否则会“下溢”; 所以删除前要检查是否 会“下溢”。
当
线性表的顺序存储结构的特点
具有简单、存储密度大、空间利用率高、对表中 任一元素可直接确定其存储地址(随机存取)、 效率高等优点; 但是也有明显的不足:
在顺序表中进行插入与删除等操作时,需大量移动数 据元素,浪费时间。 因此,对于大的线性表,特别是元素变动频繁的大线 性表,不宜采用顺序存储结构,而是采用链式存储结 构。
7.1.2 数据结构
2. 数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形式 称为数据的存储结构(也称物理结构)。 在数据的存储结构中,不仅要存放数据元素的信 息,还需要存放各数据元素之间的前驱和后继关 系的信息。 4种常见的存储结构:
(1)顺序存储结构 (2)链式存储结构 (3)索引存储结构 (4)散列存储结构
(2)顺序表的删除(删除ai)
移动元素:从第 i+1 个元素开始,直到第 n 个元素之 间,共有 ni 个元素依次向前移动一个位置。
aj
aj-1( j: i~n )
序号 数据元素 1 2 i n a1 a2 … ai … an
存储地址 ADR(a1) ADR(a1)+k ADR(a1)+(i-1)k ADR(a1)+(n-1)k
7.1.2 数据结构
数据结构:带结构的数据元素的集合。
数据元素之间相互有关联 例如,3214,6587,9345 —a1 ,a2,a3
在a1、 a2和a3之间存在“次序”关系 < a1, a2 >、 <a2、 a3> 不等于 6587, 3214,9345 —a2, a1, a3
7.1.2 数据结构