ch01 Intro 数据结构第一章
数据结构第一章课后习题与答案资料
数据结构第一章课后习题与答案资料1.什么是数据结构?答:数据结构是指数据对象以及数据对象之间的关系、操作和约束的一种逻辑结构。
它关注如何将数据以及数据之间的关系组织起来,以便更高效地进行操作和使用。
2.数据结构的分类有哪些?答:数据结构可以分为线性数据结构和非线性数据结构。
线性数据结构包括数组、链表、栈和队列;非线性数据结构包括树和图。
3.什么是算法?答:算法是指解决特定问题的一系列步骤和规则。
它可以描述为一个有限的指令集,用于将输入数据转换为输出结果。
4.算法的特征有哪些?答:算法具有以下特征:•输入:算法必须有输入,可以是零个或多个。
•输出:算法必须有输出,可以是零个或多个。
•有穷性:算法必须在有限步骤内结束。
•确定性:算法的每一步骤必须明确且无歧义。
•可行性:算法的每一步骤必须可行,即可以执行。
5.算法的时间复杂度是什么?如何表示时间复杂度?答:算法的时间复杂度是指算法执行所需的时间。
它通常用大O符号表示。
常见的时间复杂度有O(1)、O(n)、O(n^2)等。
6.算法的空间复杂度是什么?如何表示空间复杂度?答:算法的空间复杂度是指算法执行所需的额外空间。
它通常用大O符号表示。
常见的空间复杂度有O(1)、O(n)、O(n^2)等。
7.什么是数据的逻辑结构?答:数据的逻辑结构是指数据对象之间的关系。
常见的逻辑结构有线性结构、树形结构和图形结构。
8.什么是数据的存储结构?答:数据的存储结构是指数据在计算机内存中的表示方式。
常见的存储结构有顺序存储结构和链式存储结构。
9.顺序存储结构和链式存储结构有什么区别?答:顺序存储结构将数据存储在一块连续的内存空间中,可以随机访问元素,但插入和删除操作需要移动大量元素。
链式存储结构将数据存储在不连续的内存空间中,通过指针相连,插入和删除操作只需要修改指针,但访问元素需要遍历链表。
10.数组和链表的区别是什么?答:数组是一种顺序存储结构,元素在内存中连续存储,可以通过下标直接访问元素;链表是一种链式存储结构,元素在内存中不连续存储,通过指针相连。
《数据结构》第一章重点知识梳理
第一章 绪论
求绝对值 abs(表达式) 求不足整数值 floor(表达式) 求进位整数值 ceil(表达式) 判定文件结束 eof(文件变量) (10)逻辑运算 与运算&&:对于A&&B,当A的值为0时,不在对B求值。 或运算||:对于A||B,当A的值为非0时,不在对B求值。 四、算法和算法分析 1.算法 (1)算法的定义
由于算法的时间复杂度考虑的只是对于问题规模n的增长率,因此在难以精确计算基本操作 执行次数(或语句频度)的情况下,只需求出它关于n的增长率或阶即可。 4.算法的存储空间需求
类似于算法的时间复杂度,以空间复杂度(spacecomplexity)作为算法所需存储空间的量 度,记作S(n)=O(f(n))其中n为问题的规模。
18
的表示。
①元素的表示。计算机数据元素用一个由若干位组合 起来形成的一个位串表示。
图1-1四类基本结构的关系图。
5
第一章 绪论
②关系的表示。 计算机中数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象。 并由这两种不同的表示方法得到两种不同的存储结构:顺序存储结构和链式存储结构。 a.顺序映象的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 b.非顺序映象的特点是借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑
数据元素(dataelement)是数据的基本单位,在计算机程序中通常作为一个整体进行考 虑和处理。
3
第一章 绪论
3.数据对象 数据对象(dataobject)是性质相同的数据元素的集合,是数据的一个子集。
4.数据结构 数据结构(datastructure)是相互之间存在一种或多种特定关系的数据元素的集合。 (1)数据结构的基本结构 根据数据元素之间关系的不同特性,通常有下列四类基本结构: ①集合。数据元素之间除了“同属于一个集合”的关系外,别无其它关系。 ②线性结构。数据元素之间存在一个对一个的关系。 ③树形结构。数据元素之间存在一个对多个的关系。 ④图状结构或网状结构。数据元素之间存在多个对多个的关系。
数据结构(第1章)讲义
树
01
02
03
树的定义
树是一种递归定义的数据 结构,其中每个节点可以 有多个子节点,但只有一 个父节点。
树的性质
树具有层次性、有序性和 无环性等性质。
树的表示方法
树可以使用多种方式表示, 如嵌套结构、邻接矩阵等。
森林
森林的定义
森林是由若干棵树组成的集合, 其中每棵树都是一个独立的数据
结构。
森林的性质
社交网络
社交网络中需要处理大量的用户关系和信息,数 据结构在其中发挥着重要的作用。例如,使用图 数据结构可以表示用户之间的关系,使用哈希表 可以快速查找用户信息。
THANKS FOR WATCHING
感谢您的观看
05 排序与查找
排序算法
• 冒泡排序:通过重复地遍历待排序的数列,比较相邻的两个元素,若它们的顺 序错误则交换它们,直到没有需要交换的元素为止。
• 选择排序:在未排序的序列中找到最小(或最大)的元素,存放到排序序列的 起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)元素,然后 放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值 大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同 样从中间元素开始比较。 • 哈希查找:通过哈希函数将关键字转化为数组下标,然后在对应的数组下标位 置上进行查找。 • 二叉查找树查找:在二叉查找树中进行查找,从根节点开始,如果当前节点的 关键字等于目标值,则查找成功;如果当前节点的关键字大于目标值,则在左 子树中继续查找;如果当前节点的关键字小于目标值,则在右子树中继续查找 。
• 插入排序:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、 个数加一的有序数据。
数据结构(第1章)讲义
(a)集合结构
(b)线性结构
(c)树型结构 图1. 4 四类基本结构的示意图
(d)图形结构
21
可以从两个层面上研究数据结构。
抽象层面:数据结构有两个要素。
一个是数据元素的集合,另一个是关系的集合。 形式上,数据结构可以采用一个二元组来表示:
22
应用层次(具体的):
数据结构包括数据的逻辑结构和数据的物理结构。
据库技术等计算机应用,都是对数据进行加工处理的过程。 --------------这个过程是按照程序进行的。
研究数据表示和数据处理
要设计出一个结构好而且效率高的程序,必须研究数据的特 性、数据间的相互关系及其对应的存储表示方法,并利用这 些特性和关系设计出相应的算法和程序。
2
数据结构作为一门独立的课程在国外是从1968年才开始的,但在此
法则,而是利用试探和回溯的探索技术求解。
为了求得合理布局,在计算机中要存储布局的当前状 态。从最初的布局状态开始,一步步地进行试探,每试探 一步形成一个新的状态,整个试探过程形成了一棵隐含的 状态树。
每一个状态,也是一个数据,而所有的数据之间是一 种树型关系。
15
例3 教学计划编排问题 一个教学计划包含许多课程。 课程之间,有些必须按规定的先后次序进行,有些
的描述各自问题的表、树、图。 数据结构课程主要是研究非数值计算的程序设 计问题中所出现的计算机操作对象以及它们之间的
关系和操作的学科。
18
学习数据结构的目的是为了了解计算机处理
对象的特性,将实际问题中所涉及的处理对象在
计算机中如何表示出来并对它们进行处理。
与此同时,通过算法训练来提高学生的思维
能力,通过程序设计的技能训练来促进学生的综
数据结构(C语言版)——第1章绪论
正确性 可读性 健壮性 高时间效率 高空间效率
算法分析
• • 算法执行所耗费的时间,与该算法中所 有语句的执行总次数成正比 。 语句频度:算法中的所有语句的执行的 总次数 ,记为:T(n) 。 时间复杂度:把T(n)表示成同数量级函 数的形式:T(n)=O(g(n)),则O(g(n))称 为算法的时间复杂度 。描述了当n充分 大的时候算法的语句频度的数量级。
数据结构(C语言版)
第1章 绪论
本章主要知识点
• 数据结构的常用术语及基本概念
• 集合、线性结构、树型结构、图型结构 的逻辑特点 • 抽象数据类型 • 算法、算法描述及算法分析
常用术语和基本概念
• 数据:人们利用文字符号、数字符号以及其他规 定的符号对客观现实世界的事物及其活动所做的 抽象描述。 • 数据元素:表示一个事物的一组数据 ,是数据的 基本单位 。 • 数据项:数据的最小单位。 • 数据对象:性质相同的数据元素的集合。 • 数据类型:一组性质相同的值的集合以及定义在 这个集合上的一组操作的总称。
•
• 常见的时间复杂度有O(1), O(log n) , O(n),O(n2),O(n3), O(2n),分别称为常量 阶、对数阶、线性阶、平方阶、立方阶 和指数阶。 • O(1)<O(log n)<O(n)<O(n2)<O(n3)<O(2n)
• •
空间复杂度:在算法执行过程中需要
的辅助空间数量,记为:S(n) = O(f(n)) 。
常用术语和基本概念
• 数据基本结构: • 集合结构:数据元素之间无任何关系。 • 线性结构:元素之间存在一对一的线线 关系。 • 树形结构:数据元素之间存在着一对多 的关系。 • 图形结构:数据元素之间存在多对多的 关系。
《数据结构实用教程(C语言版)》第1章概论.
1.2.1 算法的概念
(3)可行性:算法中描述的操作都可以通过 执行有限次基本操作来实现。 (4)输入:一个算法有零个或多个输入。 (5)输出:一个算法必有一个或多个输出。 3.算法的评价 要设计一个好的算法通常需要考虑以下几方面 的要求: (1)正确性:要求算法能够正确地执行预先 规定的功能,并达到所期望的性能要求。 (2)可读性:为了便于理解、测试和修改算 法,算法应该具有良好的可读性。 返回到本节目录
返回到本节目录
1.1.3 数据的存储结构
顺序存储结构的主要特点: 可实现对各数据元素的随机访问。这是因为 只要知道存储的首地址以及每个数据元素所 占的存储单元,就可以计算出各数据元素的 存储地址。 不利于修改,在对数据元素进行插入、删除 运算时可能要移动一系列的数据元素。
返回到本节目录
1.1.3 数据的存储结构
返回到本节目录
1.2.1 算法的概念
4.算法的描述 为了表示一个算法,可以用多种不同的方法, 常用的有自然语言、传统流程图、结构化流 程图、N-S流程图等表示。本书采用C的描 述语言实现对各种数据结构及算法的操作描 述,算法是以函数形式描述,描述如下:
类型标识符 函数名(形式参数表) /*算法说明*/ { 语句序列 }
返回到本节目录
1.1.2 数据的逻辑结构
(【例1.3】制定教学计划 在制定教学计划时,需要考虑各门课程的开设 顺序。有些课程需要先导先修课程,有些课 程则不需要,而有些课程又是其他课程的先 导先修课程。比如,计算机专业课程的开设 情况如表1-2所示。
返回到本节目录
1.1.2 数据的逻辑结构
教学计划的关系图如图1-3所示。
返回到本节目录
1.1.2 数据的逻辑结构
数据结构第1章
例如,【例1-2】中的文件系统的系统结构图的一 个目录,【例1-3】中的“图”的一个圆圈都被称为一 个数据元素。有时,一个数据元素又可以由若干个数据 项(data item)组成。如表下所示学生成绩表中的一条 记录为一个数据元素,而记录中的学号、姓名、语文等 都分别为一个数据项。数据项是数据的不可分割的最小 单位。数据元素也可以仅有一个数据项。
2020年5月22日星期五
用计算机解决一个具体问题时,一般需要经过 以下几个步骤:
首先分析实际问题并从中抽象出一个适当的数 学模型,然后设计一个解决此数学模型的算法,最 后编制出程序上机调试,直至得到最终的解答,其 过程如图所示。
2020年5月22日星期五
寻求数学模型的实质是分析问题,从中提取操作 的对象,并找出这些操作对象之间的关系,然后使用 数学模型加以描述。
2020年5月22日星期五
数据对象(data object):数据对象是性质相同 的数据元素组成的集合,是数据的一个子集。数据元 素是数据对象的数据成员。
第1章 绪论
课程简介
数据结构是计算机专业的一门专业基础课程,很 多后续课程都要用到本课程所涉及的知识。例如,程 序设计、编译技术和操作系统等课程都要使用一些基 本的数据结构及其相关的算法;本课程讨论的其他一 些数据结构,如广义表、集合以及图等也是很多应用 领域经常涉及的。本课程的目的是介绍一些最常用的 数据结构,阐明数据结构内在的逻辑关系,讨论它们 在计算机中的存储表示,并结合各种数据结构,讨论 其各种操作的实现算法。
2020年5月22日星期五
由此可以看出,用点、点与点之间的线所构成的图 也可以反映实际生产和生活中的某些特定对象之间的特 定关系。诸如此类有铁路交通图、教学编排图等。
综合以上3个例子可见,描述非数值计算问题的数 学模型不再是数学方程,而是诸如表、树、图之类的数 据结构及其运算。
数据结构第1章
第1章绪论一、复习要点本章主要讨论贯穿和应用于整个《数据结构》课程始终的基本概念和性能分析方法。
学习本章的内容,将为后续章节的学习打下良好的基础。
本章复习的要点:1、基本知识点要求理解的概念包括:数据,数据对象,数据元素或数据成员,数据结构,数据类型,数据抽象,抽象数据类型,数据结构的抽象层次,面向对象,对象与类的关系,类的继承关系,对象间的消息通信等。
需要对各个概念进行区分与比较。
例如,按照面向对象建模技术的要求,把建立对象类作为一个层次,把建立对象间的关系(即建立结构)作为另外的层次。
因此,在软件开发中做数据结构设计时,不但要设计对象–类,类的属性,类的操作,还要建立类的实例之间的关系。
从这个角度考虑,把数据结构定义为数据对象及对象中各数据成员之间关系的集合是合理的。
又例如,类class或struct与C中的结构类型struct的区别在于前者不但有对象的状态描述(数据成员),还加入了操作(成员函数),描述对象的行为,这样可以体现一个完整的实体概念,而后者不行。
再例如,传统的数据结构概念从数据结构的逻辑结构、物理结构和相关操作等3个方面进行讨论。
它反映了数据结构设计的不同层次:逻辑结构属于问题解决范畴,物理结构是逻辑结构在计算机中的存储方式。
但在面向对象开发模式中,本课程中涉及的数据结构都属于基本数据结构,但有的属于应用级的数据结构,如稀疏矩阵,字符串,栈与队列,优先级队列,图等;有的属于实现级的数据结构,如数组,链表,堆,索引,散列表等。
2、有关算法的概念和简单的算法性能分析方法算法的5个特性表明算法的实现属于面向过程的开发模式,即传统的“输入-计算-输出”模式。
算法的应用要求明确算法的时间和空间代价。
因此,必须理解算法的定义和算法的5个特性,掌握简单的时间复杂度估计和空间复杂度估计方法(不讨论程序复杂性)。
3、描述语言要求数据结构的描述既要体现算法的逻辑,又要体现面向对象的概念,需要一种能够兼有面向对象和面向过程双重特性的描述语言。
数据结构c-语言版-第一章总结
要点:数据的逻辑结构数据的物理结构算法的时间复杂度线性表的逻辑结构是怎样的物理结构是怎样的1、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。
2、分析问题,建立数学模型–>确定数据结构->算法设计->编程实现3、数据:所有能输入到计算机中进行加工处理的对象4、数据元素:组成数据的基本单位,也称结点或记录。
是数据这一集合中的个体。
由一个或多个数据项组成,数据项是独立含义的最小单位。
5、数据对象:具有相同性质的数据元素的集合,是数据的一个子集;{0,+-1,+-2…}、{‘A’,‘B’,…,‘Z’}。
6、数据结构:数据元素和数据元素关系的集合主要由数据的逻辑结构、数据的存储结构和数据的运算3部分组成。
7、数据的逻辑结构:是指各元素之间的逻辑关系。
它是用户根据数据模型所建立的,与数据元素的内容和表达形式无关,也与计算机无关。
B=(D.R)D:数据元素的有限集R:D上关系的有限集①集合②线性结构Eg:线性表、栈、队列、链表③树状结构:结构中的数据元素之间存在一对多的关系④图状结构或网状结构:结构中的数据元素之间存在多对多的关系(如果数据元素之间的关系是无向的,则用圆括号表示)* 数据结构的形式定义为:数据结构是一个二元组Data_Structure=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集。
8、数据的存储结构:是指逻辑结构在计算机存储空间中的存放方式,有时也称为数据的物理构成。
①数据的存储结构分顺序存储结构和链式存储结构。
②顺序存储结构按其相对位置来表示数据元素间的关系。
③链式存储结构用指示数据元素存储地址的指针表示元素间的逻辑关系。
9、对于线性逻辑结构,可以采用顺序存储结构,也可采用链式存储结构;对于树状逻辑结构,一般采用链式存储结构;对于图状结构或网状结构,一般采用链式机构。
10、算法是解决某一特定类型问题的有限运算序列。
数据结构(第1章)
第1章概论1.1 基本概念和术语(1)数据:数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。
它是计算机程序加工的“原料”。
(2)数据元素:数据元素是数据的基本单位。
有些情况下,数据元素也称为元素、结点、顶点、记录。
有时一个数据元素可以由若干个数据项(也可称为字段、域、属性)组成,数据项是具有独立含义的最小标识单位。
(3)数据结构:数据结构指的是数据之间的相互关系,即数据的组织形式。
它一般包括以下三个方面的内容:①数据元素之间的逻辑关系,也称为数据的逻辑结构;②数据元素及其关系在计算机存储器内的表示,称为数据的存储结构;③数据的运算,即对数据施加的操作。
(4)数据类型:数据类型是一个值的集合以及在这些值上定义的一组操作的总称。
可将数据类型分为两类:原子类型,其值不可分解结构类型,其值可分解为若干个成分(或称为分量),举例说明有关数据结构的概念。
例1.1 学生成绩表,见表1.1。
数据的逻辑结构有两大类:(1)线性结构线性结构的逻辑特征是:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。
(2)非线性结构非线性结构的逻辑特征是一个结点可能有多个直接前驱和直接后继。
数据的存储结构可用四种基本的存储方法:(1)顺序存储方法该方法是把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储表示称为顺序存储结构。
(2)链接存储方法该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。
由此得到的存储表示称为链式存储结构。
(3)索引存储方法该方法通常是在存储结点信息的同时,还建立附加的索引表。
索引表中的每一项称为索引项,索引项的一般形式是:(关键字,地址),关键字是能惟一标识一个结点的那些数据项。
(4)散列存储方法该方法的基本思想是根据结点的关键字直接计算出该结点的存储地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本章内容:
1.1 1.2 1.3 1.4 什么是数据结构 基本概念和术语 抽象数据类型的表示与实现 算法和算法分析 1.4.1 算法 1.4.2 算法设计的要求 1.4.3 算法效率的度量 1.4.4 算法的存储空间的需求
9
数据结构 – Data Structures
1.1 什么是数据结构
数据结构学科发展背景
数据结构在计算机中的映象。包括数据元素的表示和关 系的表示两个方面。 内存 存储结构实质上是内存分配, 分类: 在具体实现时,依赖于计算机语言 * 顺序存储结构 * 链式存储结构 描述方式:
* 数据元素用高级语言中的“数据类型”来描述
* 数据元素间的关系用数据元素间的存储相对位置关系 (顺序存储结构)或在数据元素上增加指针(链式存储 结构)来表达
1.1 什么是数据结构
非数值型计算问题举例:
学籍管理(信息处理类问题)
学生信息:
Sno
95001 95002 95003 95004
课程:
Ssex
男 女 女 男
Sname
李勇 刘晨 王敏 张立
Sage
20 19 18 19
Sdept
CS IS MA IS
Cno Cname
1
2 3
Cpno
5
1
关联方式或邻接关系
学籍管理问题中,表项之间的逻辑关系指的是什么? 人机对弈问题中,格局之间的逻辑关系指的是什么? 教学计划编排问题中,课程之间的逻辑关系指的是什么? 数据的逻辑结构是从具体问题抽象出来的数据模型
20
数据结构 – Data Structures
1.2 基本概念和术语
逻辑结构
• 内涵:数据元素之间的关系,或称为“结构” 。 • 分类: *集合:松散的关系 *线性结构:一对一的关系 *树形结构:一对多的关系 *网状结构:多对多的关系
A=(D, S) D={a, b, c, d} S={<a, b>, <b, c>, <c, d>, <d, e>}
设第一个结点的存储单元位置位1000,每个结点所占存储单元的个数为1, 它的存储结构图是:
27
数据结构 – Data Structures
链式存储结构
逻辑相邻
!= 物理相邻
数据项+指针域
4
数据结构 – Data Structures
5
数据结构 – Data Structures
6
数据结构 – Data Structures
学习本书的目的 ������ 理解基本的数据结构 ->合理的组织数据 ������ 掌握基本的算法设计方法(思想) ������ 为以后各课程的学习打下一个良好的基础
1.2 基本概念和术语
数据(data)
数据是对客观事务的符号的表示。 数据是描述客观事务的数、字符以及所有能输入
到计算机中被计算机程序识别、加工处理的信息 的集合。
例如,整数、字符、声音、图像
16
数据结构 – Data Structures
数据元素(data element)
数据的基本单位,即数据集合中的个体。 例如:春、夏、秋、冬; 父亲、母亲、儿子、女儿; 书目信息 在程序中通常是作为一个整体来进行处理的。
10
数据结构 – Data Structures
1.1 什么是数据结构
计算机解决问题的过程
具体 抽象建模 问题
数学 数据结构 模型
数据 结构
数据 结构 算法分析 与设计
问题 求解
程序
程序设计
算法
描述非数值计算问题的数学模型不再是数学方程,而是诸 如表、树和图之类的数据结构。
11
数据结构 – Data Structures
2
数据结构 – Data Structures
关于本课程
课程性质:必修 考核方式:考试(闭卷)成绩(70%)+平时成绩(30%)
课程实验成绩(程序验收+报告)100%
学习要求: ①独立思考,按时完成作业。在自己不会解答时可参考其他资 料或他人答案,在分析别人的处理思路之后自己动手,鼓励 相互讨论,严禁抄袭 ②上机实验前应先就要处理的问题写出自己的解决思路和大纲, 严禁在机房游戏 ③验证(及格)、设计(中、良)、综合(优) 上机程序要现场验收、严禁拷贝他人程序及报告; ④提高课外学习的时间和内容 理解科学而不是背诵科学→读书 正确对待考试 ⑤习题
31
数据结构 – Data Structures
数据类型和数据结构的关系
数据类型是在高级语言层次已经实现的数据结构,我们 在
讨论数据结构是总是借助某种高级语言提供的数据类 型来 描述数据结构
举例:数组
虚拟存储结构
提出原因:本书是在高级程序设计语言(C/C++C++)的层)
次上讨论数据结构操作的 以高级程序设计语言中提供的数据类型为基础来表示的存储 结构称为虚拟存储结构
32
数据结构 – Data Structures
1.3 抽象数据类型的表示与实现
7
数据结构 – Data Structures
本课程的内容框架
动 态 存 外 储 部 排 文 管 序 件 理
线 广 二 性 叉 队 数 义 表 栈 列 串 组 表 树 树 图
线性结构
非线性结构
内 部 查 排 找 序
基础数据结构 数据结构
应用数据结构
8
数据结构 – Data Structures
第一章 绪论
3
数据结构 – Data Structures
数据结构学科的地位
• 综合性的专业基础课
• 介于数学、计算机硬件和计算机软件之间的核心课程 • 不仅是一般程序设计的基础,而且是设计和实现编译程序、 操作系统、数据库系统及其他系统程序和大型应用程序 的重要基础 • 本课程的先修课程:离散数学、C语言(或其他程序设计 语言) • 本课程后续课程:面向对象程序设计、操作系统、编译原 理、数据库系统、人工智能等
教学计划编排问题——图结构
如何表示课程之间的先修关系?
编号
C1 C2 C3 C4 C5 C6 C7
课程名称
高等数学 计算机导论 离散数学 程序设计 数据结构 计算机原理 数据库原理
先修课
无 无 C1 C1, C2 C3, C4 C2, C4 C4, C5, C6
C3
C1
C5
C4
C2
C7
C6
14
数据结构 – Data Structures
地址
数据
指针
1000
1001
45
63
1003
1000
1002
1003 1004
67
14 97
1001
1002
V
29
数据结构 – Data Structures
逻辑结构和存储结构之间的关系
数据的逻辑结构属于用户视图,是面向问题的,反
映了数据内部的构成方式;数据的存储结构属于具 体实现的视图,是面向计算机的。
B=(D,S) D={01,02,03,04,05,06, 07} S={<01,02>,<01,03>,<01,04>,
<02,05>,<02,06>,<03,07>}
01
02
05 06
03
06
04
树 形 结 构
24
数据结构 – Data Structures
1.2 基本概念和术语
存储结构(物理结构):
21
数据结构 – Data Structures
1.2 基本概念和术语
逻辑结构
• 描述性定义: 用自然语言描述相互之间存在一种或多种特定关系 的数据元素的集合。 • 形式化定义: Data_Structure=(D,S) D= {数据元素的有限集合} S = {D上关系的有限集合} 举例: D: {1,2,3,4} {a,b,c……x} {你们班所有人的记录} R: <a, b>: 有向关系,指a到b的关系 (a, b) : 无向关系,表示a到b和b到a之间的关系
特点 结点中除自身信息外,还有表示连接信息的 指针域 逻辑上相邻的结点,物理上不必连接 删除和插入操作灵活方便
28
数据结构 – Data Structures
链式存储结构——例
【例】 有如下一个数据结构:
A=(D, S) D={45 , 63, 67,14,97} S={<97,67>, <67, 63>, <63, 45>, <45, 14>} 它的存储结构图是:
22
数据结构 – Data Structures
(1)数据的逻辑结构——例1
【例】季节的数据结构可以表示成:
B=(D,S) D={春,夏,秋,冬} S={<春,夏>,<夏,秋>,<秋,冬>}
线 性 结 构
冬
春
夏
秋
23
数据结构 – Data Structures
(1)数据的逻辑结构——例2
【例】某数据的逻辑结构为:
数据对象(data object)