数据结构及单链表PPT学习教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
链表是本章的重点和难点熟练掌握顺序表的定义与实现包括查找插入删除算法的实熟练掌握顺序表的定义与实现包括查找插入删除算法的实熟练掌握在各种链表结构中实现线性表操作的基本方法能在实熟练掌握在各种链表结构中实现线性表操作的基本方法能在实际应用中选用适当的链表结构际应用中选用适当的链表结构第28页共70页30302121线性表的类型定义线性表的类型定义数据元素线性起点的直接后继下标是元素的序号表示元素在表中的位置n为元素总个数即表长线性终点第29页共70页3131分析分析2626个英文字母组成的英文表个英文字母组成的英文表学号姓名性别年龄班级200101181020518计016班200101181026018计017班200101181028418计011班200101181036018计012班分析学生情况登记表数据元素都是记录
第20页/共70页
21
➢ 如何描述存储结构
可以借用高级程序语言中提供 的 “数据类型”来描述它.
例如:可以用 “一维数组”类型 来描述顺序存储结构,以C语言 提供的“指针”来描述链式存 储结构
假如把C语言看成是一个执行C 指令和C数据类型的虚拟处理器, 那么讨论的第存21页/储共70页结构是数据结 构在C虚拟处理器中的表示,不
作实现La_len=ListLength(La); Lb_len=ListLength(Lb);
for(i=1;i<=lb-len;i++) {
GetElem(lb,i,e);
if(!LocateElem(La, e, equal)) ListInsert(La,
++La_len, e)
}
}
第31页/共70页
在数据元素与存储位置之间建立一种存储关系F, 根据这种关系F,已知元素E,就可以得到的存 储地址,即D=F(E)。哈希查找中的哈希表就 是这样一种存储结构。 特点:
数据元素间无内在联系; 存储形式不定。
第16页/共70页
17
例:复数3.0-2.3i 的两种存储方式:
法1:地址 内容
0300 3.0 0304 -2.3
第32页/共70页
33
2.2 线性表的顺序表示和实现
➢ 线性表的顺序表示又称为顺序存储结构或 顺序映像
➢ 逻辑上相邻,物理上也相邻 ➢ 用一组地址连续的存储单元依次存储线性
typedef struct { int no; char title;
}*BookPtr; BookPtr pbook;
第26页/共70页
27
➢ 该变量在内存中的存储示意图
book1
no 0xAF00 0xAF04 0xAF05 0xAF2B
title
154685 ‘D’ ‘A’ ‘T’ ‘A’
➢ 数据(Data): 是对信息的一种符号表示。在计算机科学中是指所有 能输入到计算机中并被计算机程序处理的符号的总称。
➢ 数据元素(Data Element): 是数据的基本单位,在计算机程序中通 常作为一个整体进行考虑和处理。一个数据元素可由若干个数据 项组成。数据项是数据的不可分割的最小单位。
法2:地址 内容
0300 3.0 0304 0408
040 -2.3 8
第17页/共70页
18
➢ 同一种逻辑结构可采用不同的存储方法 (以上四种之一或组合),这主要考虑的 是运算方便及算法的时空要求
➢ 数据结构基本操作的实现:基本操作在计 算机上的实现(方法)
第18页/共70页
19
第19页/共70页
结构简单,易实现; 插入、删除操作不便(需大量 移动元素)。
第13页/共70页
14
链式存储结构
逻辑上相邻的结点在物理位置可不相邻。结点之间的逻辑
关系是由附加的指针字段表示的。即在每一格数据元素中
增加一个存放地址的指针,用指针来表示数据元素之间的
逻辑关系。以链表形式将数据元素存放于任意存储单元中,
可连续存放,也可以不连续存放,以指针实现链表间的联
title
3D 5C 02 00
154685
0x00025C3D
(
)
‘D’ ‘A’ ‘T’ ‘A’
‘S’ ‘T’

第25页/共70页
26
3 指针 指针类型变量(指针变量)用于存储变量地址(或 称指向该变量) 指针的类型定义和变量定义
typedef 结构定义 *指针的类型名; 指针的类型名 指针变量名 例
E
F
连上一条边。
某选手比赛的项目必定有边相连 李四 D
F
A
(不能同时比赛)。
王五 B F
➢ 对图上的每个顶点染一种颜色,并且要求有线相连的 两个顶点不能具有相同颜色,而总的颜色种类应尽可 能地少。同色可以同时比赛。
第5页/共70页
姓名 丁一 马二 张三 李四 王五
项目1 A C C D B
项目2 B D E F F
第22页/共70页
23
该数组在内存中的存储示意图
0xFF00 0xFF04 0xFF08
class050xFF74 1
85 77 68 82
第23页/共70页
24
2 结构 结构类型变量(结构变量)由一组类型可以不同的数 据元素组成 结构的类型定义和变量定义
typedef 结构定义 结构类型名; 结构类型名 结构变量名;
第1页/共70页
2
➢ 例4 树状结构
河南工业大学(A)
电气学院(B)
管理学院(C)
理学院(D)
自动化系(E) 电气系(F) 测控系(G)
其中:A、B、C等是结点(node); A与B, B与E, A与C之间是层次 关系或父子关系。
第2页/共70页
3
➢ 例5 图状结构
A G
B
D
C
E
F
其中:A、B、C 等是顶点(vertex), 图中任意两个顶点之间都可能有关系。
关键字是唯一标识一个结点的那些数据项。每个结点在索引
表中对应一个索引项,称该索引表为稠密索引,一组结点在
索引表中对应一个索引项称该索引表为稀疏索引。通过索引
表记录逻辑号(记录号)和物理号(存储序号)之间的对应
关系。
非连续存放;
数据结点结构
检索速度快;
增、删操作简单。
第15页/共70页
16
散列存储结构
数据结构及单链表
例3 一张登记表DL
序号 姓 名 性 别 年 龄 1 李 刚 男 25 记录1 2 王 霞 女 29 记录2 3 刘大海 男 40 记录3 4 李爱林 男 44 记录4
➢ 其中:
姓名、性别、年龄是数据项(item)、数据域(field); (姓名,性别,年龄)是记录(record), C语言将"记录"(record)定义为”结构”(struct); 登记表也是一个线性表。
能短的时间内完成比 李 四 铅 球 200
跳高
赛。
王 五 跳 远 200
第4页/共70页
6
➢ 用如下六个不同的代号代表不同的项目:
跳高 跳远 标枪 铅球 100米 200米
AB
CD
E 姓名F 项目1 项目2 项目3
丁一 A B
E
➢ 用顶点代表比赛项目
马二 C D
不能同时进行比赛的项目之间 张三 C
‘S’ ‘T’
……
0xAF00
pbook 0xEF20
第27页/共70页
28
线性表
➢ 线性结构的特点 ➢ 熟练掌握两种存储结构的描述方法。链表是本章的重点和难点 ➢ 熟练掌握顺序表的定义与实现,包括查找、插入、删除算法的实
现 ➢ 熟练掌握在各种链表结构中实现线性表操作的基本方法,能在实
际应用中选用适当的链表结构
线性结构 结构中的数据元素之间存在一对一的 关系。
树形结构 结构中的数据元素之间存在一对多的 关系。
图状结构或网状结构 结构中的数据元素之间存 在多对多的关系
第11页/共70页
12
➢ 物理结构亦称存储结构,是数据的逻辑结构 在计算机存储器内的表示(或映像),依赖 于计算机。
➢ 存储结构可分为4大类:
18
计011班
2001011810360 王亚武 男

18
计012班





数据元素都是记录; 元素间关系是线性
同一线性表中的元素必定具有相同特性
第30页/共70页
31
➢ 线性表的抽象数据类型(ADT)
其例中2-只1 利是用一两个些线性基表本LA操和L作B分,别表另示外两个可集合以A更和B复,现杂。如: 将要两v求o个i一d u个线n新io性n的(L集表ist合&合AL=aA,并∪Li等Bs。t L。b) {复杂的操作可用基本操
顺序、链式、索引、哈希
第12页/共70页
13
顺序存储结构
把逻辑上相邻的结点存储在物理位置相邻的存储 单元里,数据元素之间的逻辑关系由存储单元的 邻接关系来体现,通常在程序设计中用数组表示。 顺序存储是把数据元素按某种顺序存放在一块连 续的存储单元中的存储形式。
数据结点结构
连续存放。逻辑上相邻,物理 上也相邻;
第28页/共70页
29
2.1 线性表的类型定义
1. 线性表的定义:是n个数据元素的有限序列
(a1, a2, … ai-1,ai, ai+1 ,…, an)
线性起点
下标,是元素的序号,表示元素在表 中的位 置
数据元素
ai的直接前趋 ai的直接后继 线性终点
n=0时称 空表
n 为元素总个数,即表长

第29页/共70页
➢ 同样的数据对象,用不同的数据结构来表示,运算效率可能有明 显的差异。
➢ 程序设计的实质是对实际问题选择一个好的数据结构,加之设计 一个好的算法。而好的算法在很大程度上取决于描述实际问题的 数据结构。 算法+数据结构=程序 1976年,瑞士 N.Wirth教授
第8页/共70页
9
1.2 基本概念和术语
Data_Structure = (D,S)
(1-1)
其中:D 是数据元素的有限集,
S 是D上关系的有限集。
数据结构主要指逻辑结构和物理结构
第10页/共70页
11
➢ 数据之间的相互关系称为逻辑结构,即从逻 辑关系上描述数据,与数据的存储无关,是 独立于计算机的。通常分为四类基本结构:
集合 结构中的数据元素除了同属于一种类型外, 别无其它关系。
项目3 E
F A
只需安排四个单 位时间进行比赛
B A
F E
C D
比赛 比赛项 时间 目
1 A,C 2 B,D
3E
4F
第6页/共70页
7
➢ 综上几个例子可见,描述这类 非数值问题的数学模型不再是 数学方程,而是诸如表、树和 图之类的数据结构。
第7页/共70页
8
➢ 计算机内的数值运算依靠方程式,而非数值运算(如表、树、图 等)则要依靠数据结构
例 一本书可以用有2个成员(数据域)的结构变量存 储。 Typedef struct {
int no; char title[40]; }BookType; BookType book1;
第24页/共70页
25
➢ 该结构变量在内存中的存储示意图
book 1
0xFF00
0xFF04
no
0xFF05 0xFF2B
30
例 分析26 个英文字母组成的英文表
( A, B, C, D, …… , Z)
数据元素都是字母; 元素间关系是线性
例 分析学生情况登记表
学号
姓名 性别
年龄
班级
2001011810205 于春梅 女
18
计016班
2001011810260 何仕鹏 男
18
计017班
2001011810284 王 爽 女
➢ 数据对象(Data Object):是性质相同的数据元素的集合。是数据 的一个子集。
第9页/共70页
10
➢ 数据结构 数据结构 定义1----
在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种 关系,这种数据元素相互之间的关系称为结构(Structure)。
➢ 数据结构的形式定义为:数据结构是一个二元组
20
逻辑结构和存储结构的关系
数据的逻辑结构是从逻辑关系(某种顺序)上观察数 据,它是独立于计算机的;可以在理论上、形式上进 行研究、推理、运算等各种操作。 数据的存储结构是逻辑结构在计算机中的实现,是依 赖于计算机的;离开了机器,则无法进行任何操作。 任何一个算法的设计取决于选定的逻辑结构;而算法 的最终实现依赖于采用的存储结构。
系。通常用程序设计语言中的指针类型来描述。
非连续存放,借助指针来表示
数据结点结构
元素间的关系;
插入、删除操作简单,只要修
改指针即可;
结构较复杂,需要额外存储空
间。
第14页/共70页
15
索引存储结构
在建立结点信息的同时,建立附加的索引表。索引表中的每
一项称为索引项,索引项的一般形式是:(关键字、地址),
第3页/共70页
4
5
➢ 例6田径赛的时间安 排问题(无向图的着 色问题) :
设有六个比赛项目, 姓 名 项目 项目 项目 规定每个选手至多可 参加三个项目,有五 丁 一 跳高 跳 远 100
人报名参加比赛(如 马 二 标 枪 铅 球
下表所示)设计比赛
日程表,使得在尽可 张 三 标 枪 100
200
22
➢ 数据的存储结构可用C语言的数据类型描述(定义)的,主要用到 下列数据类型:数组,结构,指针
1 数组 数组类型变量(数组变量)由一组类型相同的数据元素组成 数组的类型定义和变量定义
typedef 数组元素类型名 数组类型名[常量表达式]; 数组类型名 数组变量名;
例 某班30个学生的数学成绩,可以用有30个分量的整型数组变量存储。 Typedef int Scores[30]; Scores class051;
32
➢ 例2-2 有线性表LA和LB,其元素均按非递 减有序排列,编写一个算法将它们合并成 一个线性表LC,且LC的元素也是按非递减 有序排列。
算法思路:依次扫描通过LA和LB的元素,比较 当前的元素的值,将较小值的元素赋给LC,如 此直到一个线性表扫描完毕,然后将未完的那 个顺序表中余下部分赋给LC即可。LC的容量 要能够容纳LA、LB两个线性表相加的长度
相关文档
最新文档