数据结构基础第1章_绪论
数据结构第一章课后习题与答案
第 1 章 绪 论(2005-07-14) -第 1 章 绪 论课后习题讲解1. 填空⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵( )是数据的最小单位,( )是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶ 从逻辑关系上讲,数据结构主要分为( )、( )、( )和( )。
【解答】集合,线性结构,树结构,图结构⑷ 数据的存储结构主要有( )和( )两种基本方法,不论哪种存储结构,都要存储两方面的内容:( )和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸ 算法具有五个特性,分别是( )、( )、( )、( )、( )。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹ 算法的描述方法通常有( )、( )、( )和( )四种,其中,( )被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺ 在一般情况下,一个算法的时间复杂度是( )的函数。
【解答】问题规模⑻ 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为( ),若为n*log25n,则表示成数量级的形式为( )。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴ 顺序存储结构中数据元素之间的逻辑关系是由( )表示的,链接存储结构中的数据元素之间的逻辑关系是由( )表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵ 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
数据结构 第一章 绪论
理。
第一章
绪论
学习要点
了解数据结构有关概念的含义,特别是数据 的逻辑结构,数据的存储结构之间的关系;
1
2 熟悉类C语言的书写规范,特别要注意值调用 和引用调用的区别及出错处理方式; 3 了解算法时间复杂度的计算方法;
本章的主要内容:
1.1 1.2 1.3 1.4
什么是数据结构: 基本概念和术语 抽象数据类型的表示与实现 算法与算法分析 补充 类C语言简要说明
2)熟练掌握一门程序设计语言。
3) 熟知应用领域的相关知识。
其后两个条件比较容易实现,而第一个条件则需 要花相当的时间和精力才行。这也是区分一个程序设 计人员水平高低的一个重要标志。因此,我们学习数 据结构的目的,就是为了更好地进行程序设计。
1.1 什么是数据结构
数据结构课程就是要对不同的数据对象(Data object) 进行探索。对每种数据对象,首先考虑要执行的操作,然 后考虑表示这种数据对象的方法,以使这些操作有效地实 现(算法 Algorithm)。 学习数据结构,要掌握两种技术: 1)善于设计种种可供选择的数据表示形式(Data Structure)。 2)对相应的Data Structure设计出完成各种操作的 算法。 2.什么是数据结构?
数据结构是一门研究非数值计算的程序设计问题中计 算机的操作对象以及它们之间的关系和操作等等的学科。
本课程主要讨论以下三种数据结构:
1.1 什么是数据结构
1.1 什么是数据结构
Tt
a
b
c
a1
a2
b1
b2
c1
c2
d
d1
d2
d3
图 1-2
树形结构示意图
1.1 什么是数据结构
数据结构
第1章绪论1.1 什么是数据结构数据与数据之间的关系1.2 基本概念和术语1.基本定义(1).数据(Data) :是客观事物的符号表示。
在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element) :是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。
(2)数据项(Data Item):一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
数据项是对客观事物某一方面特性的数据描述。
数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
2.举例如字符集合C={‘A’,‘B’,‘C’,…}--C表示字符对象;A ,B等表示数据元素;再如学生集合Students={“Zhangsan”, “Lisi”,…}Zhangsan(ID,name,age,grade,…)……--Students表示学生对象;“Zhangsan”、“Lisi”表示数据元素;Zhangsan的ID、name、age等表示数据项。
3.数据结构的形式定义数据结构的形式定义是一个二元组:Data-Structure=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集4.逻辑结构与物理结构(1)数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方便而人为定义的关系,这种自然或人为定义的“关系”称为数据元素之间的逻辑关系,相应的结构称为逻辑结构。
(2)数据结构在计算机中的表示(映像)称为数据的物理结构。
数据结构的存储方式1)顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。
2)链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表示数据元素之间的逻辑结构(关系)。
3)例:设有数据集合A={3.0,2.3,5.0,-8.5,11.0} ,两种不同的存储结构。
数据结构第1章习题-绪论
第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()【中科院计算所 1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学 1999 一、1(2分)【武汉交通科技大学 1996 一、1( 4分)】4.一个算法应该是()。
【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.5. 下面关于算法说法错误的是()【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
【北方交通大学 2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学 2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()【北方交通大学 2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表13.以下哪个数据结构不是多型数据类型()【中山大学 1999 一、3(1分)】A.栈 B.广义表 C.有向图 D.字符串14.以下数据结构中,()是非线性数据结构【中山大学 1999 一、4】A.树 B.字符串 C.队 D.栈15. 下列数据中,()是非线性数据结构。
数据结构第一章--绪论(严蔚敏版)
解 T = (D, R ) D={A,B,a,b,c }
R是D上的关系的集合 是 上的关系的集合
A
B
a R={ P1,P2 } P1 ={<A,a>, <A,b>, <A,c>} P2 ={<B,a>, <B,b>, <B,c>}
b
c
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数可以表示为 a+bi 一个复数可以表示为 复数 C={a,b}
也可以表示成一个有序对 <a, b>
∴这里存在一种关系 P ={<a,b>} (只有一个有序对 只有一个有序对) 只有一个有序对
而R是C上的关系的集合 R={ P } 是 上的关系的集合
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数的数据结构为 Complex= (C , R) 其中, 其中, C={a,b} R={ P } P ={<a,b>}
a b c
解 其数据结构可描述为 d e T = (D, R ) D是数据元素的集合 D={a,b,c,d,e} 是数据元素的集合
R是D上的关系的集合 R={ P } 是 上的关系的集合
P ={<a,b>,<a,c>,<b,d>,<b,e>}
例2
一小组有a,b,c 三个学生,一个导师A 一小组有a,b,c 三个学生,一个导师A 和一个辅导员B 和一个辅导员B,此小组的数据结构如图:
48
ADT 抽象数据类型名 { 数据对象: 数据对象:〈数据对象的定义〉 数据关系: 数据关系:〈数据关系的定义〉 基本操作: 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名 其中基本操作的定义格式为: 基本操作名(参数表) 基本操作名 初始条件:〈初始条件描述〉 初始条件: 操作结果:〈操作结果描述〉 操作结果
数据结构(C语言版) 第1章 绪论
理论课教材: 数据结构(C语言版) 严蔚敏 吴伟民 编著
第一章 绪论
1.0 1.1 1.2 1.3 1.4 学习数据结构的主要意义和要求 数据结构讨论的范畴 基本概念 抽象数据类型的表示和实现 算法和算法的度量
学习数据结构的主要意义和要求
意义:
数据结构和算法是计算机学科的两大支柱 数据结构是程序设计的基础 程序=算法+数据结构
存储结构分为: 顺序存储结构——借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据 元素间的逻辑关系 数据的逻辑结构与存储结构密切相关 逻辑结构
线性表
物理结构
顺序存储结构
树
图
链式存储结构
复合存储结构
h
h
元素1 1400
1345 元素2
链式存储
数据结构的形式定义为: 数据结构是一个二元组 Data_Structures = (D, S) 其中: D 是数据元素的有限集, S 是 D上关系的有限集。
数据元素的映象方法: 例用二进制位(bit)的位串表示数据元素
(321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
算法设计的要求
2. 可读性 算法主要是为了人的阅读与交流,其次才是为计算机执行,因此算法 应该易于人的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以 调试。 3.健壮性 当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而
1536
元素3
1346
元素4
∧
存储地址 1345 1346
存储内容 元素1 元素4
指针 1400 ∧
数据结构课程1
-------------------
-------
-------
-------
-------
-------
这张表中的元素存在一个顺序关系,即谁在谁前,谁在谁 后的信息(即病人诊断顺序依次为张立,田方,……) 。 所以,可以用线性结构来刻画这种关系。。
例1-3 大学系级行政机构
大学系级行政机构,如图1.1所示:
数据结构的含义
因此可以认为,数据结构是介于数学、计算机硬件和计 算机软件三者之间的一门核心课程(如图1.1所示)。
数学
代数系统
编码理论 数据类型 算子关系
数据表示法
数据的操作 文件系统
存储装置
数据结构
硬件
数据存取
( 计 算 机 系机器组织
统设计)
数据组织
信息检索
软件
(计算机程 序设计)
图1.1 “数据结构”所处的地位
3. 数据的操作
一般而言,必须对数据进行加工处理,才能得到问题的 解。在非数值性问题中,对数据的操作(或运算)已不限 于对数据进行加、减、乘、除等数学运算。数据的操作是 定义在逻辑结构上的,而操作的具体实现是在存储结构上 进行的。基本的数据操作主要有以下几种:
(1)查找:在数据结构中寻找满足某个特定条件的数据元 素的位置或值。
现实问
数学模
算法
程序
解
题
型
图1.8 计算机求解问题的流程
即首先要从现实问题出发,抽象出一个适当的数学模型,
然后设计一个求解此数学模型的算法,最后根据这个算法 编出程序,经过测试、排错、运行直至得到最终的解答。 (现实)问题、数学模型、算法和程序是问题求解过程中 出现的四个不同的概念。
数据结构(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)) 。
常用术语和基本概念
• 数据基本结构: • 集合结构:数据元素之间无任何关系。 • 线性结构:元素之间存在一对一的线线 关系。 • 树形结构:数据元素之间存在着一对多 的关系。 • 图形结构:数据元素之间存在多对多的 关系。
《数据结构》讲义
数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。
换句话说,数据是对客观事物采用计算机能够识别、存储和处理的形式所进行的描述;是计算机加工处理的对象。
包括数值、字符、声数据元素是组成数据的基本单位一个数据元素可由若干个数据项组成()数据对象是性质相同的数据元素的集合,是数据的一个子集。
…},字母字符数据对象是集合象。
由此可看出,不论数据元素集合是无限集(如整数集)Data Structure)数据元素相互之间的关系称为结构( Structure ),有四种基本结构。
集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。
线性结构:结构中的数据元素之间存在着一对一的线性关系。
图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。
为数据结构的有限集,S是D上关系的有限集。
表示复数的虚部。
存储结构(又称物理结构)是逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括据元素的表示和关系的表示形式化描述:要存入机器中,建立一从,使S(D逻辑结构与存储结构的关系为:数据结构的内容可归纳为三个部分:逻辑结构、存储结构和运算集合。
按某种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机的存储器中,并在这些数据上定义了一个运算的集合,(Data Type)数据类型是一组性质相同的值集合以及定义在这个值集合上的一组操作的总称合,即该类型的取值范围,以及该类型中可允许使用的一组运算。
例如高级语言中的数据类型就是已经实现的从这个意义上讲,数据类型是高级语言中允许的变量种类,计算机中使用的是二进制数,汇编语言中则可给出各种数据的十进制表示,如二进制数据的抽象; 使用者在编程时可以直接使用据抽象,出现了数据类型,(Abstract Data Type))是指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。
抽象数据类型的定义取决于客观存在的一组逻辑特性,而与其在计算机内如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。
实用数据结构基础(第四版)课后习题
一、判断题(第一章绪论)1、数据元素就是数据得最小单元。
答案:错误2.一个数据结构就是由一个逻辑结构与这个逻辑结构上得基本运算集构成得整体。
答案:错误3.数据得存储结构就是数据元素之间得逻辑关系与逻辑结构在计算机存储器内得映像。
答案:正确4.数据得逻辑结构就是描述元素之间得逻辑关系,它就是依赖于计算机得。
答案:错误5、用语句频度来表示算法得时间复杂度得最大好处就是可以独立于计算机得软硬件,分析算法得时间答案:正确(第二章线性表)6、取顺序存储线性表得第i个元素得时间同i得大小有关。
答案:错误7、线性表链式存储得特点就是可以用一组任意得存储单元存储表中得数据元素。
答案:正确8、线性链表得每一个节点都恰好包含一个指针域。
答案:错误9、顺序存储方式得优点得存储密度大,插入与删除效率不如练市存储方式好。
答案:正确10、插入与删除操作就是数据结构中最基本得两种操作,所以这两种操作在数组中也经常使用。
答案:错误(第三章栈)11、栈就是一种对进栈与出栈作了限制得线性表。
答案:错误12、在C(或C++)语言中设顺序栈得长度为MAXLEN,则top=MAXLEN表示栈满。
答案:错误13、链栈与顺序栈相比,其特点之一就是通常不会出现满栈得情况。
答案:正确14、空栈就就是所有元素都为0上得栈。
答案:错误15、将十进制数转换为二进制数就是栈得典型应用之一。
答案:正确(第四章队列)16、队列式限制在两端进行操作得线性表。
答案:正确17、判断顺序队列为空得标准就是头指针与尾指针都指向同一结点。
答案:错误18、在循环链列队中无溢出现像。
答案:错误19、在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。
答案:正确20、顺序队列与循环队列关于队满与队空得判断条件就是一样得。
答案:错误(第五章串)21、串就是n个字母得有限序列。
答案:错误22、串得堆分配存储就是一种动态存储结构。
答案:正确23、串得长度就是指串中不同字符得个数。
数据结构
数据结构知识整理(部分)第一章:绪论1.数据:数据是外部信息的载体,他能够被计算机识别、存储和加工处理,是计算机程序加工的原料;2.数据元素:数据元素是数据的基本单位,在计算机中通常被作为一个整体进行考虑和处理;3.一个数据元素可由若干个数据项组成。
数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段或域;4.数据结构是相互之间存在的一种或多种特定关系的数据元素的集合。
在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构;5.4种基本数据结构:集合:只有“同属一个集合”的关系;线性结构:存在着一对一的关系;树形结构:存在着一对多的关系;图状结构:存在着多对多的关系;6.数据结构包括数据的逻辑结构和物理结构。
逻辑结构:从具体问题抽象出来的数学模型,与数据在计算机中的具体储存没有关系。
从逻辑上可以把数据结构分为线性结构和非线性结构,其中集合、树、图形结构属于非线性结构;7.数据的物理结构又叫存储结构,是数据在计算机中的表示和存储,包括数据元素的表示和存储以及数据元素之间关系的表示和存储,存储结构必须依赖于计算机。
数据元素之间的关系在计算机中的表示有两种:顺序映像和非顺序映像。
分别对应两和数据的存储结构:顺序存储结构和链式存储结构;顺序存储结构是指把逻辑上相邻的数据元素存储在物理位置相邻的存储单元中;链式存储结构不要求必须相邻。
链式存储结构中的数据元素叫做结点,在结点中附近设地址域来存储与该结点相邻的结点的地址来实现结点之间逻辑关系;8.在软件设计中,抽象数据类型通常包括定义、表示和实现三部分9.算法:是指在有限的时间范围之内为解决某一问题而采取的方法和步骤的准确完整的描述,他是一个有穷的规则序列,这些规则决定了解决某一特定问题的一系列运算;10算法的特征:有穷性,确定性,可行性,输入,输出;算法+数据结构=程序;11.评价一个算法的主要标准:正确性,可读性,健壮性,运行时间,占用空间;健壮性要求算法要全面细致的考虑所有可能出现的边界情况和异常情况;实际上,算法的时间效率和空间效率经常是一对矛盾,相互抵触,我们要根据实际问题进行处理,有时要牺牲空间换取时间,有时要牺牲时间换取空间。
第1章 绪论
ADT 有两个重要特征:
数据抽象 用ADT描述程序处理的实体时,
强调的是其本质的特征 其所能完成的 本质的特征、其所能完成的 本质的特征 功能以及它和外部用户的接口 外部用户的接口(即外界 功能 外部用户的接口 外界 使用它的方法) 使用它的方法 外部特性和其内部 数据封装 将实体的外部特性和其内部 实现细节分离,并且对外部用户隐藏 对外部用户隐藏 实现细节分离 其内部实现细节
抽象数据类型需要通过固有数据 固有数据 类型(高级编程语言中已实现的数据 类型 类型)来实现。 类C语言详见10-11页。
例如,对以上定义的复数
// -----存储结构的定义 存储结构的定义
typedef struct { float realpart; float imagpart; }complex;
数据的存储结构 存储结构
—— 逻辑结构在存储器中的映像 映像 “数据元素”的映像 ? “关系”的映像 ?
数据元素的映像方法: 数据元素的映像方法:
用二进制位(bit)的位串表示数据元素 (321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
数据结构: 数据结构 问题的数学模型
例如: 例如 数值计算的程序设计问题 结构静力分析计算 ─━ 线性代数方程组 全球天气预报 ─━ 环流模式方程 (球面坐标系)
非数值计算的程序设计问题
例一: 整数中的最大值 例一 求一组(n个)整数 整数
比较两个数的大小” 比较两个数的大小 算法: ? 基本操作是“比较两个数的大小
( ) 关系的映像方法: 关系的映像方法:表示<x, y>的方法) 顺序映像
以相对的存储位置表示后继关系 例如: 例如:令 y 的存储位置和 x 的存储位置 之间差一个常量 C 而 C 是一个隐含值,整个存储结构中只 整个存储结构中只 含数据元素本身的信息
数据结构重点
第一章:绪论:数据结构课程的任务是:讨论数据的各种逻辑结构、在计算机中的存储结构以及各种操作的算法设计;:数据:是客观描述事物的数字、字符以及所有的能输入到计算机中并能被计算机接收的各种集合的统称;数据元素:表示一个事物的一组数据称作是一个数据元素,是数据的基本单位;数据项:是数据元素中有独立含义的、不可分割的最小标识单位;数据结构概念包含三个方面:数据的逻辑结构、数据的存储结构的数据的操作;数据的逻辑结构指数据元素之间的逻辑关系,用一个数据元素的集合定义在此集合上的若干关系来表示,数据结构可以分为三种:线性结构、树结构和图;:数据元素及其关系在计算机中的存储表示称为数据的存储结构,也称为物理结构;数据的存储结构基本形式有两种:顺序存储结构和链式存储结构;:算法:一个算法是一个有穷规则的集合,其规则确定一个解决某一特定类型问题的操作序列;算法规则需满足以下五个特性:输入——算法有零个或多个输入数据;输出——算法有一个或多个输出数据,与输入数据有某种特定关系;有穷性——算法必须在执行又穷步之后结束;确定性——算法的每个步骤必须含义明确,无二义性;可行性——算法的每步操作必须是基本的,它们的原则上都能够精确地进行,用笔和纸做有穷次就可以完成;有穷性和可行性是算法最重要的两个特征;:算法与数据结构:算法建立数据结构之上,对数据结构的操作需用算法来描述;算法设计依赖数据的逻辑结构,算法实现依赖数据结构的存储结构;:算法的设计应满足五个目标:正确性:算法应确切的满足应用问题的需求,这是算法设计的基本目标;健壮性:即使输入数据不合适,算法也能做出适当的处理,不会导致不可控结高时间效率:算法的执行时间越短,时间效率越高; 果;高空间效率:算法执行时占用的存储空间越少,空间效率越高;可读性:算法的可读性有利于人们对算法的理解;:度量算法的时间效率,时间复杂度,课本39页;:递归定义:即用一个概念本身直接或间接地定义它自己;递归定义有两个条件:至少有一条初始定义是非递归的,如1=1.由已知函数值逐步递推计算出未知函数值,如用n-1定义n;第二章:线性表线性表:线性表是由nn>=0个类型相同的数据元素a0,a1,a2,…an-1,组成的有限序列,记作:Linear List = a0,a1,a2,…an-1其中,元素ai可以是整数、浮点数、字符、也可以是对象;n是线性表的元素个数,成为线性表长度;若n=0,则LinearList为空表;若n>0,则a0没有前驱元素,an-1没有后继元素,ai0<i<n-1有且仅有一个直接前驱元素ai-1和一个直接后继元素ai+1;线性表的顺序存储是用一组连续的内存单元依次存放线性表的数据元素,元素在内存的物理存储次序与它们在线性表中的逻辑次序相同;线性表的数据元素数据同一种数据类型,设每个元素占用c字节,a0的存储地址为Loca0,则ai的存储地址Locai为:Locai = Loca0+ ic数组是顺序存储的随机存储结构,它占用一组连续的存储单元,通过下标识别元素,元素地址是下标的线性函数;:顺序表的插入和删除操作要移动数据元素;平均移动次数是属数据表长度的一半;课本第50页:线性表的链式存储是用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上不一定相邻,必须采用附加信息表示数据元素之间的顺序关系;它有两个域组成:数据域和地址域;通常成为节点;课本第55页及56页单链表课本56页单链表的遍历:Node<E> p = head; whilep=null{ 访问p节点;p = ;}单链表的插入和删除操作非常简便,只要改变节点间的链接关系,不需移动数据元素;单链表的插入操作:1:空表插入/头插入2中间插入/尾插入ifhead == null Node<E> q = new Node<E>x;{ head = new Node<E>x; = ;}else{ = q;Node<E> q=new Node<E>x; 中间插入或尾插入都不会改变单表= head; 的头指针head;head = q;}单链表的删除操作:头删除:head = ;中间/尾删除:if=null{ =循环单链表:如果单链表最后一个节点的next链保存单链表的头指针head值,则该单链表成为环形结构,称为循环单链表;课本67若rear是单链表的尾指针,则执行=head;语句,使单链表成为一条循环单链表;当==head时,循环单链表为空;:双链表结构:双链表的每个结点有两个链域,分别指向它的前驱和后继结点,当==null时,双链表为空;设p指向双链表中非两端的某个结点,则成立下列关系:p=;双链表的插入和删除:1插入2删除q=new DLinkNodex;= ;=; =p; if=null{= q;=q; .prev = ;}循环双链表:当==head且==head时,循环双链表为空;第三章:栈和队列栈:栈是一种特殊的线性表,其中插入和删除操作只允许在线性表的一端进行;允许操作的一端称为栈顶,不允许操作的一端称为栈底;栈有顺序栈和链式栈;栈中插入元素的操作称为入栈,删除元素的操作称为出栈;没有元素的中称为空栈;栈的进出栈顺序:后进先出,先进后出;及75页的思考题;:队列:队列是一种特殊的线性表,其中插入和删除操作分别在线性表的两端进行;向队列中插入元素的过程称为入队,删除元素的过程称为出对,允许入队的一端称为队尾,允许出队的一端称为对头;没有元素的队列称为空队列;队列是先进先出;第四章:串:串是一种特殊的线性表,其特殊性在于线性表中的每个元素是一个字符;一个串记为:s=“s0s1s2…sn-1” 其中n>=0,s是串名,一对双引号括起来的字符序列s0s1s2…sn-1是串值,sii=0,1,2,…n-1为特定字符集合中的一个字符;一个串中包含的字符个数称为串的长度;长度为0的串称为空串,记作“”,而由一个或多个空格字符构成的字符串称为空格串;子串:由串s中任意连续字符组成的一个子序列sub称为s的子串,s称为sub 的主串;子串的序号是指该子串的第一个字符在主串中的序号;串比较:两个串可比较是否相等,也可比较大小;两个串子串相等的充要条件是两个串子串的长度相同,并且各对应位置上的字符也相同;两个串的大小由对应位置的第一个不同字符的大小决定,字符比较次序是从头开始依次向后;当两个串长度不等而对应位置的字符都相同时,较长的串定义为较“大”;第五章:数组和广义表:数组是一种数据结构,数据元素具有相同的数据类型;一维数组的逻辑结构是线性表,多维数组是线性表的扩展;:一维数组:一维数组采用顺序存储结构;一个一维数组占用一组连续的存储单元;设数组第一个元素a0的存储地址为Loca0,每个元素占用c字节,则数组其他元素ai的存储地址Locai为:Locai= Loca0+ic数组通过下标识别元素,元素地址是下标的线性函数;一个下标能够唯一确定一个元素,所划给的时间是O1;因此数组是随机存取结构,这是数组最大的优点;:多维数组的遍历:有两种次序:行主序和列主序;行主序:以行为主序,按行递增访问数组元素,访问完第i行的所有元素之后再访问第i+1行的元素,同一行上按列递增访问数组元素;a00,a01,…a0n-1, a10,a11,…a1n-1,…am-10,am-11,…,am-1n-12列主序:以列为主序,按列递增访问数组元素,访问完第j列的所有元素之后再访问第j+1列的元素,同一列上按列递增访问数组元素;多维数组的存储结构:多维数组也是由多个一维数组组合而成,组合方式有一下两种;静态多维数组的顺序存储结构:可按行主序和列主序进行顺序存储;按行主序存储时,元素aij的地址为:Locaij= Loca00+in+jc按列主序存储时,Locaij= Loca00+jm+ic动态多维数组的存储结构;二维数组元素地址就是两个下标的线性函数;无论采用哪种存储结构,多维数组都是基于一维数组的,因此也只能进行赋值、取值两种存取操作,不能进行插入,删除操作;第六章:树是数据元素结点之间具有层次关系的非线性结构;在树结构中,除根以外的结点只有一个直接前驱结点,可以有零至多个直接后继结点;根没有前驱结点;树是由nn>=0个结点组成的有限集合树中元素通常称为结点;N=0的树称为空树;n>0大的树T;有一个特殊的结点称为根结点,它只有后继结点,没有前驱结点;除根结点之外的其他结点分为mm>=0个互不相交的集合T0,T1,T3……..,Tm-1,其中每个集合Ti0<=i<m本身又是一棵树,称为根的子树;树是递归定义的;结点是树大的基本单位,若干个结点组成一棵子树,若干棵互不相交的子树组成一棵树;树的每个结点都是该树中某一棵子树的根;因此,树是由结点组成的、结点之间具有层次关系大的非线性结构;结点的前驱结点称为其父母结点,反之,结点大的后继结点称为其孩子结点;一棵树中,只有根结点没有父母结点,其他结点有且仅有一个父母结点;拥有同一个父母结点的多个结点之间称为兄弟结点;结点的祖先是指从根结点到其父母结点所经过大的所有结点;结点的后代是指该结点的所有孩子结点,以及孩子的孩子等;结点的度是结点所拥有子树的棵数;度为0的结点称为叶子结点,又叫终端结点;树中除叶子结点之外的其他结点称为分支结点,又叫非叶子结点或非终端结点;树的度是指树中各结点度的最大值;结点的层次属性反应结点处于树中的层次位置;约定根结点的层次为1,其他结点的层次是其父母结点的层次加1;显然,兄弟结点的层次相同;树的高度或深度是树中结点的最大层次树;设树中x结点是y结点的父母结点,有序对x,y称为连接这两个结点的分支,也称为边;设X0,X1,….,Xk-1是由树中结点组成的一个序列,且Xi,Xi+10<=i<k-1都是树中的边,则该序列称为从X0到Xk-1的一条路径;路径长度为路径上的边数;在树的定义中,结点的子树T0,T1…..,Tm-1之间没有次序,可以交换位置,称为无序树,简称树;如果结点的子树T0,T1……,Tm-1从左到右是有次序的,不能交换位置,则称该树为有序树;森林是mm>=0棵互不相干的树的集合;给森林加上一个根结点就变成一棵树,将树的根节点删除就变成森林;二叉树的性质1:若根结点的层次为1,则二叉树第i层最多有2 的i-1次方i>=1个结点;二叉树的性质2:在高度为k的二叉树中,最多有2的k次方减一个结点;二叉树的性质3:设一棵二叉树的叶子结点数为n0,2度结点数为n2,则n0=n2+1;一棵高度为k的满二叉树是具有2的k次方减一个结点的二叉树;满二叉树中每一层的结点数目都达到最大值;对满二叉树的结点进行连续编号,约定根节点的序号为0,从根节点开始,自上而下,每层自左至右编号;一棵具有n个结点高度为k的二叉树,如果他的每个节点都与高度为k的满二叉树中序号为0~n-1的结点一一对应,则这棵二叉树为为完全二叉树;满二叉树是完全二叉树,而完全二叉树不一定是满二叉树;完全二叉树的第1~k-1层是满二叉树第k层不满,并且该层所有结点必须集中在该层左边的若干位置上;二叉树的性质4:一棵具有n个结点的完全二叉树,其高度k=log2n的绝对值+1二叉树的性质5:一棵具有n个结点的完全二叉树,对序号为i的结点,有若i=0,则i为根节点,无父母结点;若i>0,则i的父母结点的序号为i-1/2;若2i+1<n,则i的左孩子结点序号为2i+1;否则i无左孩子;若2i+2<n,则i的右孩子结点的序号为2i+2,否则i无右孩子;二叉树的遍历二叉树的遍历是按照一定规则和次序访问二叉树中的所有结点,并且每个结点仅被访问一次;二叉树的三种次序遍历1:先根次序;访问根节点,遍历左子树,遍历右子树;2:中根次序;遍历左子树,访问右子树,遍历右子树;3:后根次序;遍历左子树,遍历右子树,访问根节点;先根次序遍历时,最先访问根节点;后根次序遍历时,最后访问根节点;中根次序遍历时,左子树上的结点在根节点之前访问,右子树上的结点在根节点之后访问;二叉树的插入和删除操作P147二叉树的层次遍历P149习题P167 6—10,6—19第七章图是由定点集合及顶点间的关系集合组成的一种数据关边系;顶点之间的关系成为边;一个图G记为G=V,E,V是顶点A的有限集合,E是边的有限集合;即V={A|A属于某个数据元素集合}E={A,B|A,B属于V}或E={<A,B>|A,B属于V且PathA,B}其中PathA,B表示从顶点A到B的一条单向通路,即PathA,B是有方向的;无向图中的边事没有方向,每条边用两个顶点的无序对表示;有向图中的边是有方向,每条边用两个顶点的有序对表示;完全图指图的边数达到最大值;n个顶点的完全图记为Kn;无向完全图Kn的边数为nn-1/2,有向完全图Kn的边数为nn-1;子图:设图G==V,E,G’=V’,E’,若V’包含于V且E’包含于E,则称图G’是G的子图;若G’是G的真子图;连通图:在无向图G中,若从顶点VI到Vj有路径,则称Vi和Vj是联通的;若图G 中任意一对顶点Vi和VjVi不等于Vj都是联通的,则称G为连通图;非连通图的极大联通子图称为该图的联通分量;强连通图:在有向图中,若在每一对顶点Vi和VjVi不等于Vj之间都存在一条从Vi到Vj的路径,也存在一条从Vi到Vj的路径,也存在一条从Vi到Vj的路径,则称该图的强连通图;非强连通图的极大强连通子图称为该图的强连通图分量;图的遍历遍历图是指从图G中任意一个顶点V出发,沿着图中的边前行,到达并访问图中的所有顶点,且每个顶点仅被访问一次;遍历图要考虑一下三个问题:指定遍历的第一个访问顶点由于一个顶点可能与多个顶点相邻,因此要在多个邻接顶点之间约定一种访问次序;由于图中可能存在回路,在访问某个顶点之后,可能沿着某条路径又回到该顶点;深度优先搜索图的深度优先搜索策略是,访问某个顶点v,接着寻找v的另一个未被访问的邻接顶点w访问,如此反复执行,走过一条较长路径到达最远顶点;若顶点v没有未被访问的其他邻接顶点,则回到前一个被访问顶点,再寻找其他访问路径;图的深度优先搜索遍历算法P188联通的无回路的无向图,简称树;树中的悬挂点又成为树叶,其他顶点称为分支点;各连通分量均为树的图称为森林,树是森林;由于树中无回路,因此树中必定无自身环也无重边否则他有回路若去掉树中的任意一条边,则变成森林,成为非联通图;若给树加上一条边,形成图中的一条回路,则不是树;P191生成树和生成森林:一个连通无向图的生成树是该图的一个极小联通生成子图,它包含原图中所有顶点n个以及足以构成一棵树的n-1条边;一个非联通的无向图,其各连通图分量的生成图组成该图的生成森林;图的生成图或生成森林不是唯一的,从不同顶点开始、采用不同遍历可以得到不同的生成树或森林;在生成树中,任何树中,任何两个顶点之间只有唯一的一条路径;第八章折半查找算法描述P206,P207二叉排序树及其查找:二叉排序树或者是一棵空树;或者是具有下列性质的二叉树:每个结点都有一个作为查找依据的关键字,所有结点的关键字互不相同;若一个结点的左子树不空,则左子树上所有结点的关键字均小于这个节点的关键字;每个结点的左右子树也分别为二叉排序树;在一棵二叉排序树中,查找值为value的结点,算法描述如下:从根结点开始,设p指向根结点将value与p结点的关键字进行比较,若两者相等,则查找成功;若value值较小,则在p的左子树中继续查找;若value值较大,则在p的右子树中继续查找;重复执行上一步,直到查找成功或p为空,若p为空,则查找不成功;习题8-6第九章直接插入排序算法描述:p228冒泡排序算法的描述:p232快速排序算法描述p233直接选择排序算法描述p236直接选择排序算法实现如下:Public static void selectSortinttable{forint i=0;i<;i++{int min=I;forint j=i+1;j<;j++{iftablej<tableminmin=j;ifmin=i{int temp=tablei;tablei==tablemin;tablemin=temp;}}}}堆排序是完全二叉树的应用,是充分利用完全二叉树特性的一种选择排序;堆定义:设n个元素的数据序列{k0,k1,;;;;kn-1},当且仅当满足下列关系k1<=k2i+1且ki<=k2i+2 i=0,1,2,3,….,n/2-1或ki>==k2i+1且ki>=2i+2i=0,1,2,3,…..n/2-1时,序列{k0,k1…….kn-1}称为最小堆或最大堆;将最小大堆看成是一颗完全二叉树的层次遍历序列,则任意一个结点的关键字都小于等于大于等于它的孩子节点的关键字值,由此可知,根结点值最小大;根据二叉树的性质5,完全二叉树中的第i0<=i<n个结点,如果有孩子,则左孩子为第2i+1个结点,右孩子为第2i+2个结点;。
数据结构(C语言版)_第1章 绪论
2.算法的复杂性分析
算法运行所需要的计算机资源的量,需要的 时间资源的量称作时间复杂度,需要的空间 (即存储器)资源的量称作空间复杂度。
运行算法所需要的时间T写成输入规模n的函数, 记作T(n)。“规模”一般是指输入量的数目,比 如在排序问题中,问题的规模可以是定义为被排 序的元素数目。
算法的描述方法
算法可以用自然语言描述,但由于自然语言表 达算法容易产生二义性,人们常使用专用的算 法描述工具。
图1-6传统流程图符号
图1-7结构化流程图符号
【例1.5】分别用传统流程图和结构化流程图描 述一个算法。 【问题描述】分别用传统流程图和结构化流程 图描述下列问题:给定两个正整数m和n,求最大 公约数。 【分析】将数学中求最大公约数的辗转相除法 的求解过程进行分解,用标准的流程图基本符 号表示成图1-8(a)和(b)图。
表1-1 学生成绩信息表
学号
20120401 20120402 20120403 20120405
姓名
王伟 张译民 陈慧 李彩霞
性别
男 男 女 女
出生年月
1993/01 1993/08 1992/12 1993/05
数学
123 115 108 102
语文
98 108 114 113
英语
90 85 95 90
A
B逻辑结构图
线性结构
• 数据元素之间存在一对一的关系,称为线性结构。该 结构的特点是除第一个元素和最后一个元素外,其它 元素都有且只有一个直接前趋和直接后继。
• 如图1-2所示的线性结构是一种最常见、也是最简单 的数据结构,学生成绩管理系统的数据结构是线性结 构,另外仓库管理、教材管理等系统中处理的数据也 是线性结构。线性结构的基本操作有插入、删除及查 找等,具有线性结构的数据简称为线性表。
数据结构(一)绪论
1.3 算法和算法分析 1.3.1 算法:
是对特定问题求解步骤的一种描述,是指令的有限序列,其中 每一条指令表示一个或多个操作。 算法具有以下五个特性: (1)有穷性 一个算法必须总是在执行有穷步之后结束,且每 一步都在有穷时间内完成。 (2)确定性 算法中每一条指令必须有确切的含义。不存在二义 性。 (3)可行性 一个算法是可行的。即算法描述的操作都是可以通 过已经实现的基本运算执行有限次来实现的。 (4)输入 一个算法有零个或多个输入,这些输入取自于某个特 定的对象集合。 (5)输出 一个算法有一个或多个输出,这些输出是同输入有着 某些特定关系的量。
数据元素:
是数据(集合)中的一个“个体” 是数据结构中讨论的基本单位
数据结构主要指逻辑结构和物理结构 数据之间的相互关系称为逻辑结构。通常 分为四类基本结构: 一、集合 结构中的数据元素除了同属于一 种类型外,别无其它关系。 二、线性结构 结构中的数据元素之间存在一 对一的关系。 三、树型结构 结构中的数据元素之间存在一 对多的关系。 四、图状结构或网状结构 结构中的数据元素 之间存在多对多的关系。
求整数n(n>=0)阶乘的算法如下,其时间复杂度, int fact(int n) {if (n<=1) return 1; return n*fact(n-1); }
A ) O(log2 n) B) O(n)
C)
O(n (2分)
作业:
1. 计算时间复杂度 sum=1; for(i=0;sum<n;i++) sum+=i; 2.设给定若干n值,比较两函数n2和50nlog2n的增长 趋势,并确定在什么范围内,函数n2的值大于
例4 for(i=1;i<=n;++i) for(j=1;j<=n;++j) {++x;s+=x;} 语句频度为:n2 其时间复杂度为:O(n2) 即时间复杂度为平方阶。
《数据结构》吕云翔编著第1章绪论习题解答
数据结构第一章绪论习题一、【单选题】1。
(A)是数据的基本单位。
A、数据元素B、数据对象C、数据项D、数据结构2. (C)是数据的不可分割的最小单位。
A、数据元素B、数据对象C、数据项D、数据结构3。
若采用非顺序映象,则数据元素在内存中占用的存储空间(C)。
A、一定连续B、一定不连续C、可连续可不连续4. 若采用顺序映象,则数据元素在内存中占用的存储空间(A)。
A、一定连续B、一定不连续C、可连续可不连续5。
在数据结构中,从逻辑上可以把数据结构分为(C)A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6. 在树形结构中,数据元素间存在(B)的关系。
A、一对一B、一对多C、多对多D、除同属一个集合外别无关系7. 下列说法中错误的是(B)。
A、数据对象是数据的子集B、数据元素间关系在计算机中的映象即为数据的存储结构C、非顺序映象的特点是借助指示元素存储地址的指针来表示数据元素间逻辑关系D、抽象数据类型指一个数学模型及定义在该模型上的一组操作8。
计算机算法指的是(C)。
A、计算方法B、排序方法C、解决问题的有限运算序列D、调度方法9. 下列不属算法特性的是(D)。
A、有穷性B、确定性C、零或多个输入D、健壮性10。
算法分析的目的是(C)。
A、找出数据结构的合理性B、研究算法中的输入和输出的关系C、分析算法的效率以求改进D、分析算法的易读性和文档性11.算法分析的两个主要方面是(A)。
A、空间复杂性和时间复杂性B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性12。
算法的计算量的大小称为算法的(A)。
A、效率B、复杂性C、现实性D、难度13。
在下面的程序段中,对x的赋值语句的频度为(C).for(i=1;i〈=n;++i)for(j=1;j〈=n;++j)x=x+1;A、2nB、nC、n2D、log2n14.设n为正整数,则如下程序段中最后一行的语句频度在最坏情况下是(D)。
数据结构
4 3
图1.2 交通示意图
精品课件
6
第1章 绪 论
图1.2中每个顶点的信息可以代表一个城镇的主要简况,各 个顶点之间的关系纵横交错更加复杂,这种关系称之为图状或 网状结构。在实际应用中,假设某地区有4个城镇,有一调查 小组要对该地区每个城镇进行调查研究,并且每个城镇仅能调 查一次,试问调查路线怎样设计才能以最高的效率完成此项工 作?这就是一个图论方面的问题。交通图的存储和管理确实不 属于单纯的数值计算问题,而是一种非数值的信息处理问题。
精品课件
9
第1章 绪 论
1.1.2 数据结构有关概念与术语
在计算机科学中,数据(data)是描述客观事物的数字、字符以 及所有能够输入到计算机中并被计算机处理的信息的总称。除了 数字、字符之外,还有用英文、汉字或其他语种字母组成的词组、 语句,以及表示图形、图像和声音等信息也可称之为数据。
数据元素(data element)是数据的基本单位,在计算机中通常
精品课件
4
第1章 绪 论
理工学院
机械系
土建系
计算机系
机械与自动化 工业设计 建筑学 土木工程 计算机科学与技术
图1.1 专业设置
树中的每个结点可以包含较多的信息,结点之间的关系不再 是顺序的,而是分层、分叉的树形结构。对于树结构的主要操作 是遍历、查找、插入或删除等。
精品课件
5
第1章 绪 论
最后分析交通或通信网问题。如果把若干个城镇看成若干 个顶点,再把城镇之间的道路看成边,它们可以构成一个网状 的图。如图1.2所示。
精品课件
8
第1章 绪 论
“数据结构”是计算机专业中的一门专业基础课。它为 操作系统、数据库原理、编译原理等后继专业课程的学习奠 定了基础。数据结构涉及到各方面的知识,如计算机硬件范 围的存储装置和存取方法;在计算机软件范围中的文件系统, 数据的动态存储与管理,信息检索;数学范围的许多算法知 识,还有一些综合性的知识,如编码理论、算子关系、数据 类型、数据表示、数据运算、数据存取等各方面的知识。因 此,数据结构是数学、计算机硬件、软件三者之间的一门核 心课程。
数据结构(从概念到算法)第一章 绪论
(2)可读性:算法的变量命名、格式符合行业规范,并在关键处给出注释,
以提升算法的可理解性。
(3)健壮性:算法能对不合理的输入给出相应的提示信息,并做出相应处
理。
(4)高执行效率与低存储量开销:涉及算法的时间复杂度和空间复杂度评
判。
算法设计的一般步骤
1.3.1算法定义与性质
算法设计出来后有多种表述方法,一般有如下几种描述工具:第一种是自然语
良好基础,数据结构与算法设计密不可分。算法是对特定问题求解步骤的一种描述。
换言之,算法给出了求解一个问题的思路和策略。
一个算法应该具有以下 5 个特征。
(1)有穷性,即算法的最基本特征,要求算法必须在有限步(或有限时间)
之后执行完成。
(2)确定性,即每条指令或步骤都无二义性,具有明确的含义。
(3)可行性,即算法中的操作都可以通过已经实现的基本运算执行有限次
成的集合,数据对象是数据的一个子集。实例说明如下。
由 4 个整数组成的数据对象: D1={20,- 30,88,45}
由正整数组成的数据对象: D2={1,2,3,…}
数据结构的基本概念
(5)数据结构。数据结构是相互之间存在一种或多种特定关系的数据元素
的集合。数据元素之间的关系称为结构,主要有 4 类基本结构,如下图所示。
址,数据'C'的指针指向数据'D'的结点地址,具体如图所示。
数据结构的基本概念
上图数据元素存储的地址在整体上具有前后次序,但实际对单链表数据元素
所分配的存储空间是随机的。如下图 所示,数据元素'A'在物理存储地址上可能位
于数据元素'B'和'D'存储地址之后。
数据结构教程(章 (1)
第1章 绪论
图1-3 求最大公约数的算法
第1章 绪论
例1.2 对两个正整数m和n,给出求它们最大公因子的 算法。
数据的存储结构是指数据的逻辑结构在计算机存储器中的映 像表示,即在能够反映数据逻辑关系的前提下数据在存储器中的 存储方式。
数据的运算是在数据上所施加的一系列操作,称为抽象运算, 它只考虑这些操作的功能,而暂不考虑如何完成,只有在确定了 存储结构后,才会具体实现这些操作。也即,抽象运算是定义在 逻辑结构上的,而实现则是建立在存储结构上的。最常用的运算 有:检索、插入、删除、更新以及排序等。
第1章 绪论 例1.1 一个学生信息(数据)表如表1.2所示,请指出表中 的数据、数据元素及数据项,并由此得出三者之间的关系。
姓名 刘小平 王红 吕军
马文华
表 1.2 学生信息表
性别
年龄
专业
男
21
计算机
女
20
数学
男
20
经济
女
19
管理
其他 … … …
…
第1章 绪论
【解】表1.2中是全部学生信息数据。表中的每一行即 为记录一个学生信息的数据元素,而该行中的每一项则为一个 数据项。数据、数据元素和数据项实际上反映了数据组织的三 个层次,数据可以由若干个数据元素构成,而数据元素则又可 以由若干数据项构成。
(2) 链式存储结构:在数据元素上附加指针域,并借助指 针来指示数据元素之间的逻辑关系。链式存储结构通常是利用 程序语言中的指针类型来描述的。