数据结构及单链表.pptx
《数据结构及单链表.pptx》由会员分享,可在线阅读,更多相关《数据结构及单链表.pptx(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1例3 一张登记表DL 序号 姓 名 性 别 年 龄 1 李 刚 男 25 记录1 2 王 霞 女 29 记录2 3 刘大海 男 40 记录3 4 李爱林 男 44 记录4 其中:姓名、性别、年龄是数据项(item)、数据域(field);(姓名,性别,年龄)是记录(record),C语言将记录(record)定义为”结构”(struct);登记表也是一个线性表。第1页/共70页2例4 树状结构 其中:A、B、C等是结点(node);A与B,B与E,A与C之间是层次关系或父子关系。河南工业大学(A)电气学院(B)管理学院(C)理学院(D)自动化系(E)电气系(F)测控系(G)第2页/共70页3
2、例5 图状结构ABDCEFG其中:A、B、C 等是顶点(vertex),图中任意两个顶点之间都可能有关系。第3页/共70页4例6田径赛的时间安排问题(无向图的着色问题):设有六个比赛项目,规定每个选手至多可参加三个项目,有五人报名参加比赛(如下表所示)设计比赛日程表,使得在尽可能短的时间内完成比赛。姓姓 名名项目项目 项目项目 项目项目 丁丁 一一跳高跳高跳跳 远远 100 100 马马 二二标标 枪枪铅铅 球球张张 三三标标 枪枪100 100 200 200 李李 四四铅铅 球球200 200 跳跳 高高王王 五五跳跳 远远200 200 第4页/共70页5用如下六个不同的代号代表不同的项
3、目:跳高 跳远 标枪 铅球 100米 200米 A B C D E F用顶点代表比赛项目不能同时进行比赛的项目之间连上一条边。某选手比赛的项目必定有边相连(不能同时比赛)。对图上的每个顶点染一种颜色,并且要求有线相连的两个顶点不能具有相同颜色,而总的颜色种类应尽可能地少。同色可以同时比赛。姓名姓名项目项目1 项目项目2 项目项目3丁一丁一 A B E马二马二 C D 张三张三 C E F李四李四 D F A王五王五 B F第5页/共70页6姓名姓名项目项目1项目项目2项目项目3丁一丁一 A B E马二马二 C D 张三张三 C E F李四李四 D F A王五王五 B FA AE EB BF F
4、D DC C比赛比赛时间时间比赛项比赛项目目1A,C2B,D3E4F 只需安排四个单位时间进行比赛第6页/共70页7综上几个例子可见,描述这类非数值问题的数学模型不再是数学方程,而是诸如表、树和图之类的数据结构。第7页/共70页8计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。而好的算法在很大程度上取决于描述实际问题的数据结构。算法+数据结构=程序1976年,瑞士 N.Wirth教授第8页/共70页91.2 基本概念和术语数据(Da
5、ta):是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。数据对象(Data Object):是性质相同的数据元素的集合。是数据的一个子集。第9页/共70页10数据结构 数据结构 定义1-在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构的形式定义为:数据结构是一个二元组 Data_Structur
6、e=(D,S)(1-1)其中:D 是数据元素的有限集,S 是D上关系的有限集。数据结构主要指逻辑结构和物理结构第10页/共70页11数据之间的相互关系称为逻辑结构,即从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。通常分为四类基本结构:集合 结构中的数据元素除了同属于一种类型外,别无其它关系。线性结构 结构中的数据元素之间存在一对一的关系。树形结构 结构中的数据元素之间存在一对多的关系。图状结构或网状结构 结构中的数据元素之间存在多对多的关系第11页/共70页12物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像),依赖于计算机。存储结构可分为4大类:顺序、链式、索
7、引、哈希第12页/共70页13顺序存储结构顺序存储结构顺序存储结构顺序存储结构 数据结点结构数据结点结构 把逻辑上相邻的结点存储在物理位置相邻的存储单元里,数据元素之间的逻辑关系由存储单元的邻接关系来体现,通常在程序设计中用数组表示。顺序存储是把数据元素按某种顺序存放在一块连续的存储单元中的存储形式。连续存放。逻辑上相邻,物理上也相邻;结构简单,易实现;插入、删除操作不便(需大量移动元素)。第13页/共70页14链式存储结构链式存储结构链式存储结构链式存储结构 数据结点结构数据结点结构 逻辑上相邻的结点在物理位置可不相邻。结点之间的逻辑关系是由附加的指针字段表示的。即在每一格数据元素中增加一个
8、存放地址的指针,用指针来表示数据元素之间的逻辑关系。以链表形式将数据元素存放于任意存储单元中,可连续存放,也可以不连续存放,以指针实现链表间的联系。通常用程序设计语言中的指针类型来描述。非连续存放,借助指针来表示元素间的关系;插入、删除操作简单,只要修改指针即可;结构较复杂,需要额外存储空间。第14页/共70页15索引存储结构索引存储结构索引存储结构索引存储结构 数据结点结构数据结点结构 在建立结点信息的同时,建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是:(关键字、地址),关键字是唯一标识一个结点的那些数据项。每个结点在索引表中对应一个索引项,称该索引表为稠密索引,一组结点
9、在索引表中对应一个索引项称该索引表为稀疏索引。通过索引表记录逻辑号(记录号)和物理号(存储序号)之间的对应关系。非连续存放;检索速度快;增、删操作简单。第15页/共70页16散列存储结构散列存储结构散列存储结构散列存储结构在数据元素与存储位置之间建立一种存储关系F,根据这种关系F,已知元素E,就可以得到的存储地址,即D=F(E)。哈希查找中的哈希表就是这样一种存储结构。特点:数据元素间无内在联系;存储形式不定。第16页/共70页17例:复数3.02.3i 的两种存储方式:2.303043.00300040803043.0030004082.3法1:地址 内容法2:地址 内容第17页/共70页1
10、8同一种逻辑结构可采用不同的存储方法(以上四种之一或组合),这主要考虑的是运算方便及算法的时空要求数据结构基本操作的实现:基本操作在计算机上的实现(方法)第18页/共70页19第19页/共70页20逻辑结构和存储结构的关系逻辑结构和存储结构的关系逻辑结构和存储结构的关系逻辑结构和存储结构的关系数据的逻辑结构是从逻辑关系(某种顺序)上观察数据,它是独立于计算机的;可以在理论上、形式上进行研究、推理、运算等各种操作。数据的存储结构是逻辑结构在计算机中的实现,是依赖于计算机的;离开了机器,则无法进行任何操作。任何一个算法的设计取决于选定的逻辑结构;而算法的最终实现依赖于采用的存储结构。第20页/共7
11、0页21如何描述存储结构可以借用高级程序语言中提供的“数据类型”来描述它.例如:可以用“一维数组”类型来描述顺序存储结构,以C语言提供的“指针”来描述链式存储结构假如把C语言看成是一个执行C指令和C数据类型的虚拟处理器,那么讨论的存储结构是数据结构在C虚拟处理器中的表示,不妨称它为虚拟存储结构第21页/共70页22数据的存储结构可用C语言的数据类型描述(定义)的,主要用到下列数据类型:数组,结构,指针1 数组数组类型变量(数组变量)由一组类型相同的数据元素组成数组的类型定义和变量定义typedef 数组元素类型名 数组类型名常量表达式;数组类型名 数组变量名;例 某班30个学生的数学成绩,可以
12、用有30个分量的整型数组变量存储。Typedef int Scores30;Scores class051;第22页/共70页23该数组在内存中的存储示意图class051 0 xFF00 0 xFF04 0 xFF08 0 xFF74 85 77 68 82第23页/共70页242 结构结构类型变量(结构变量)由一组类型可以不同的数据元素组成结构的类型定义和变量定义typedef 结构定义 结构类型名;结构类型名 结构变量名;例 一本书可以用有2个成员(数据域)的结构变量存储。Typedef struct int no;char title40;BookType;BookType book1
13、;第24页/共70页25该结构变量在内存中的存储示意图 0 xFF00 0 xFF04 0 xFF05 0 xFF2B154685(0 x00025C3D)DATASTbook1notitle3D5C0200第25页/共70页263 指针指针类型变量(指针变量)用于存储变量地址(或称指向该变量)指针的类型定义和变量定义 typedef 结构定义 *指针的类型名;指针的类型名 指针变量名例typedef struct int no;char title;*BookPtr;BookPtr pbook;第26页/共70页27该变量在内存中的存储示意图 0 xAF00 0 xAF04 0 xAF05
14、0 xAF2B 154685 D A T A S T 0 xAF00notitle0 xEF20pbookbook1第27页/共70页28线性表线性结构的特点熟练掌握两种存储结构的描述方法。链表是本章的重点和难点熟练掌握顺序表的定义与实现,包括查找、插入、删除算法的实现熟练掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构第28页/共70页292.1 线性表的类型定义(a1,a2,ai-1,ai,ai1,,an)1.线性表的定义:是n个数据元素的有限序列n=0时称为数据元素线性起点ai的直接前趋ai的直接后继下标,是元素的序号,表示元素在表中的位置n为元素总个数,即
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单链表
限制150内