数据结构 第一章 绪论
数据结构第1章绪论
例
n 阶矩 阵相乘的算法
矩阵相乘的基本运算:乘法 加法;
For ( i = 1; i<=n; i++ ) For (j = 1; j<=n; j++ )
{ c[ i ][ j ] = 0 ; For (k = 1; k<= n; k++ ) c[ i ][ j ] += a[ i ][ k ] * b[ k ] [ j ] } O(n3) 称为矩阵相乘算法时间复杂度; O(n3)表示矩阵相乘算法执行时间与n3成正比, 即O(n3)与n3 同一数量级 ; 乘法 加法
◆设计 求解问题的方法
◆ 编程 main ( )
{
int len, wide ,area ; scanf (“%d %d%\n”, &l,&w); area=len*wide ; printf (“area=%d”,area);
}
1.1 本课程研究的问题
2)非数值问题
例 2 已知某级学生情况 , 要求分班按入学成绩排列顺序。 学号 00201 00102 00202 00301 姓名 性别 杨润生 男 石磊 男 李梅 女 马耀先 男 出生日期 82/06/01 83/12/21 83/02/23 82/07/12 籍贯 入学成绩 所在班级 广州 561 00计算机2 汕头 512 00计算机1 阳江 532 00计算机2 广州 509 00计算机3
数据结构基本操作的实现: 基本操作在计算机上的实现(方法)
1.3 数据结构的分类及表示
一 常用的数据结构
例
某班学生基本情况登记表,记录了每个学生的学号 姓名 专业 1) 集合 政治 面貌 ,表中的记录是按学生的学号顺序排列的。
数据结构 第一章 绪论
理。
第一章
绪论
学习要点
了解数据结构有关概念的含义,特别是数据 的逻辑结构,数据的存储结构之间的关系;
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章 数据结构绪论
编译理论 数据表示法 存储装置 硬件(计算机系统设计)
算子关系 数据 数据的操作 类型 数据结构 文件系统 数据存取 数据组织 机器组织 信息检索 软件(计算机程序设计)
4
1.1 引
言
为了使读者对数据结构有一个感性的认识, 为了使读者对数据结构有一个感性的认识, 下面给出几个数据结构的示例, 下面给出几个数据结构的示例,读者可以 通过这些示例去理解数据结构的概念。 通过这些示例去理解数据结构的概念。 【示例1】 职工基本情况表。 参见教材P2 【示例2】 井字棋对弈问题。 【示例3】 教学计划编排问题。
9
1.3 抽象数据类型
首先我们了解一下在程序设 计语言中出现的各种数据类 型。
10
1.3.1 数据类型
数据类型是一个值的集合和定义在这个值集上 的一组操作的总称。 的一组操作的总称。 在高级程序设计语言中,数据类型可分为两类: 在高级程序设计语言中,数据类型可分为两类: 一类是原子类型,另一类则是结构类型。 一类是原子类型,另一类则是结构类型。 在某种意义上,数据结构可以看成是“ 在某种意义上,数据结构可以看成是“一组具 有相同结构的值” 有相同结构的值”,而数据类型则可被看成是 由一种数据结构和定义在其上的一组操作所组 成的。 成的。
6
1.2 基本概念与术语
1. 逻辑结构
(1) 线性结构。 (2) 集合结构。 (3) 树形结构。 (4) 图状结构。 数据的四种基本逻辑结构如图1.4所示。
7
1.2 基本概念与术语
2. 存储结构 (1) 顺序存储结构是指把逻辑上相邻的结 点存储在物理上相邻的存储单元里,结点 之间的逻辑关系由存储单元位置的邻接关 系来体现。 (2) 链式存储结构是把逻辑上相邻的结点 存储在物理上任意的存储单元里,结点之 间的逻辑关系由附加的指针域来体现。 (3) 索引存储结构是用结点的索引号来确 定结点的存储地址。
数据结构第1章 绪论
课程改革: 课程改革:
实验单独设课, 强调上机实践能力 数据结构课程: 理论课(68课时4学分)+实验课(24课时1.5 学分) 课程考核
1.3 基本概念和术语
1、 2、 3、 4、 5、 6、 数据 数据元素 数据对象 数据结构 数据类型 抽象数据类型
1. 数据 能输入到计算机中的符号集 数据: 合. 2. 数据元素 数据的基本单位. 数据元素: 3. 数据对象 数据对象: 具有相同性质的数据元素的集合. 4. 数据结构: DATA STRUCTURE 数据结构: 数据及其相互关 系的集合. 分为逻辑结构和存储结构(物理结 构). 数据结构-------------------------------类 数据结构----------------类 CLASS
数据的存储结构
1. 顺序存储结构 顺序存储结构:借助元素在存储器中的相对位置 来表示数据元素间的逻辑关系。 【例1.4】对于表1-1提出的学生信息登记表进行存储, 假定每个元素占用50个存储单元,数据从1000号单 元开始由低地址向高地址存放,对应的顺序存储结 构如表1-3所示。
数据的存储结构
顺序存储结构的主要特点: 可实现对各数据元素的随机访问。这是 因为只要知道存储的首地址以及每个数 据元素所占的存储单元,就可以计算出 各数据元素的存储地址。 不利于修改,在对数据元素进行插入、 删除运算时可能要移动一系列的数据元 素。
抽象数据类型的定义: 抽象数据类型的定义:
ADT: ADT:抽象数据类型名 data 数据元素之间逻辑关系定义 operation 操作1 操作1 操作2 操作2
……
操作n 操作n
抽象数据类型 的不同视图
1.4 1.4 算法和算法分析
1. 定义:算法(Algorithm)是对特定问题求 定义:算法(Algorithm) 解步骤的一种描述,它是指令的有限序列, 解步骤的一种描述,它是指令的有限序列,其 中每一条指令表示一个或多个操作。 中每一条指令表示一个或多个操作 特性: 2. 特性:
数据结构 第一章 绪论
2014-4-1
21
... 2000 2002 2004 2006 2008 2010 2012 2014 2016 05 01 03 08 02 07 04 06 ... 6200 6202 6020 4000 4002 4800 4802 4804
... 08 03 ... 05 01 02 ... 06 ... 07 04 ... 4802 4002 6200 0 4804 4000
… … … … … …
计算机科学与技术 应用数学 信息管理与信息系统 英语 …
大学语文 数据结构 管理信息系统 高等数学 …
08 计算机一班 08 数学三班 09 信管一班 09 外语八班 …
1 2 3 4 …
2014-4-1
8
例1-2 人-机对弈
国际象棋、井字棋、五子棋、中国象棋和围棋 …。 把计算机操作的对象对弈过程中可能出现的棋盘状 态称为格局。 格局之间的关系是由不同的棋类对弈规则决定,这 个关系往往是一种层次结构:从一个格局可以派生 出若干个新的格局,而从一个新格局又可以派生出 多个更新的格局,将对弈开始到结束整个对弈过程 可能派生的所有格局表示出来,就象一棵倒挂的 “树”。以这些对弈游戏中的井字棋为例,其“树 根”就是对弈开始之前的棋盘格局,而所有的“叶 子”就是可能出现的结局,对弈过程就是从树根沿 树叉到每个叶子的过程。如图所示:
2014-4-1
11
350
体育馆 N
H
300 300
G
150
北二区大门
信息楼 国际文化大 厦
文科大楼
E
300
200
F
外语楼
北一区大门
1500
北门
900
数据结构第一章--绪论(严蔚敏版)
解 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 ∧
数据结构(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章 绪论
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 章 绪 论1.1 数据结构的兴起和发展一、数据结构起源于程序设计。
·程序设计的新问题:应如何组织待处理的数据以及数据之间的关系(结构)。
·70年代初,数据结构作为一门独立的课程开始进入大学课堂。
二、数据结构随着程序设计的发展而发展。
程序设计经历了三个阶段:无结构阶段、结构化阶段和面向对象阶段,相应地,数据结构的发展也经历了三个阶段:三、数据结构的发展并未终结。
1. 数据结构将继续随着程序设计的发展而发展;2. 面向各专门领域的数据结构得到研究和发展,各种空间数据结构也在探索中。
应用领域:科学计算;程序设计面向计算机 应用领域:科学计算与非数值处理;算法+数据结构=程序 应用领域:更多地应用于非数值处理;(算法+数据结构)=程序1.2 数据结构的研究对象例1-1 学籍管理问题例1-2 人——机对弈问题例1-3 教学计划编排问题表1-1 学生学籍登记表 (a) 井字棋的一个格局 (b) 对弈树的局部 图1-2 对弈问题中格局之间的关系1.3 数据结构的基本概念1.3.1 数据结构1. 数据:在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
2. 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
构成数据元素的不可分割的最小单位称为数据项。
3. 数据对象:是具有相同性质的数据元素的集合,是数据的子集。
4. 数据结构:是指相互之间存在一定关系的数据元素的集合。
按照视点的不同,数据结构分为逻辑结构和存储结构。
数据的逻辑结构是指数据元素之间逻辑关系的整体。
根据数据元素之间逻辑关系的不同,数据结构分为四类:⑴集合数据元素之间的关系是。
⑵线性结构数据元素之间的关系是。
⑶树结构数据元素之间的关系是。
⑷图结构数据元素之间的关系是。
数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。
有两种存储结构:顺序存储结构和链接存储结构。
数据结构讲义第一章绪论
注:一个抽象数据类型确定了一个模型,但将模型的实 现细节隐藏起来;它定义了一组运算,但将运算 的实现过程隐藏起来。
用抽象数据类型的概念来指导问题的求解过程:
数学模型 非形式算法
抽象数据模型 伪语言程序
数据结构 可执行程序
§ 1.3 抽象数据类型
ADT的定义格式 ADT <ADT名> { 数据对象:<数据对象的定义> 结构关系:<结构关系的定义> 基本操作:<基本操作的定义> }ADT <ADT名>
初始化数据结构;
Destroy( )
销毁数据结构;
Get (i )
查找第 i 个元素;
Insert (i , b ) 在第 i 个位置插入元素 b ;
Delete( i )
删除第 i 个元素;
Traverse( )
遍历整个数据结构
§ 1.3 抽象数据类型
用C语言实现抽象数据类型ADT 用标准C语言表示和实现ADT描述时,主要
§ 1.2 数据结构的基本概念
数 据:描述客观事物的数字、字符以及一切 能够输入到计算机中,并且能够被计 算机程序处理的符号的集合。
数据是一个广义的概念,可以指普通的数据 (可参加算术运算),也可以指符号(源程序、 产品名称等)或数字化了的声音、图形、图像等。
§ 1.2 数据结构的基本概念
数据元素:数据(集合)中的一个个"个体",是组 成数据的"基本单位"。
a2 d4 d1
a1 d1 d2
list
a1
a2
a4 d5 d3
a3 d3 … d4
a3
…
a30 ∧
§ 1.3 抽象数据类型
数据结构
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) 链式存储结构:在数据元素上附加指针域,并借助指 针来指示数据元素之间的逻辑关系。链式存储结构通常是利用 程序语言中的指针类型来描述的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
----使用C语言
第一章
绪论
本章主要介绍以下内容
数据结构研究的主要内容
数据结构中涉及的基本概念
算法的概念、描述方法以及评价标准
数据结构出现的必要性
用计算机处理的实际问题可分为两大类问题:
数值计算:计算机发展初期,人们使用计算机主
要是用于处理数值问题。
例,求解直角三角形斜边长度。
7
3
5
6
7
按红、绿、黑的顺序,用最少的颜色染色
学习数据结构的必要性
• • 计算机处理的大多属于非数值计算问题。 解决非数值问题的首要任务是选取一种合适的 数据结构表示该问题,然后才考虑如何编写有 效的算法。
结论
计算机的操作对象的关系更加复杂,操作形式不再是 单纯的数值计算,而更多地是对这些具有一定关系的 数据进行组织管理,我们将此称为非数值性处理。 要使计算机能够更有效地进行这些非数值性处理,就 必须弄清楚这些操作对象的特点,在计算机中的表示 方式以及各个操作的具体实现手段。这些就是《数据 结构》这门课程研究的主要内容。
372F98
顺序存储结构
3 372F50
链 式 存 储 结 构
…
…
…
(6)数据类型:是一个值的集合和定义在此集合上的一 组操作的总称。
数据类型 = 数据结构 + 操作
例,整型: 整数的集合,定义在其上的操作包括(加、减、乘、除) 例,线性表: 记录的集合,定义在其上的操作包括(插入、删除)
按元素值的不同性质,数据类型可以分为两类 原子类型: 值是不可分解的、非结构体的。
a=3
c
b=4
数学模型: •
c2=a2+b2
c=5
解决数值计算问题的核心:
建立适当的数学模型
数据结构出现的必要性
用计算机处理的实际问题可分为两大类问题:
非数值计算:由于计算机产业的飞速发展,如今,
计算机已深入到人类社会的各个领域。计算机 的应用已不再限于科学计算,而更多地用于控 制、管理及数据处理等非数值计算的处理工作。 与此相应,计算机加工处理的对象由纯粹的数 值发展到字符、表格和图像等各种具有一定结 构的数据,这就给程序设计带来一些新的问题。 为了编写出一个“好”的程序,必须分析待处 理的对象的特性以及各处理对象之间存在的关 系。
132
123
321
231
213
特点: 在求解过程中,所处理的数据之间具有层次关 系,这是我们所说的树形结构; 对它的操作有:建立树形结构,输出最低层结 点内容等等。
应用举例3——制定教学计划
在制定教学计划时,需要考虑各门课程的开设 顺序。有些课程需要先导课程,有些课程则不 需要,而有些课程又是其他课程的先导课程。
抽象数据类型——人
数据元素: 大脑、嘴、耳朵、
数据结构
脖子、胳膊、手 …
数据关系: 有机体
数据操作:
初始化 (大脑、嘴…) 思考 (大脑) 交谈 (嘴) 听音乐 (耳朵) 销毁 ( )
例如:如上级单位与多个下级单位的关系、家庭成员中的
父亲与子女之间的关系等
A B C E G
D
F
数据逻辑结构
3、图结构:
每个数据元素可以有零个或若干个前驱数据元素和零个或若干
个后驱数据元素。(多对多关系)
例如:如各城市之间的交通网络中各站点之间的关系、计算机 网络中各节点之间的关系、一个大的工程项目的施工进度等,
某种关系,这种数据元素相互之间的关系称为结构。
是相互之间存在一种或多种特定关系
的数据元素的集合。
因此,可以把数据结构看成是带结构的数据 元素的集合。
学生情况登记表
数据项 学号 990701 990702 990703 姓名 赵惠惠 张小妹 李小波 性别 女 男 男
数据元素
19 21 18
年龄
成绩 85 77 82
特点:逻辑上相邻的数据元素在物理上不一定也相邻。 数据间的逻辑关系表现在结点的链接关系上。
h
1345
指向第一结 点的指针
链式存储结构
元素3 1346 元素4
h
元素1 1400 元素2 1536
∧
存储地址 1345 1346
存储内容 元素1 元素4
指针 1400 ∧
表示上一个结点指 针域中保存的是下 一个结点在内存中 的存储地址
只抽象反映数据元素的逻辑关系,与数据的存储无关
根据数据元素之间的相互联系方式,可分为四种:
1、线性结构:该结构中的结点之间存在一对一的关系。
例如:一年四季中的春、夏、秋、冬 A B C D
除第一和最后一个数据元素外,每个数据元素只有一个前 驱数据元素和一个后继元素(顺序表就是典型的线性结构)。 (第一元素只有后驱元素,是后一个元素只有前驱元素)
2、数据结构中涉及的基本概念
(1)数据(Data):
是人们利用文字符号、数字符号以及其他规定的符号对现
实世界的事物及其活动所作的抽象描述,即对客观事物的
符号表示,它是计算机程序加工的原料。
例如:对学生的信息描述
数值计算中求积分程序的处理程序是整数和实数
文件处理程序或编译程序所处理的对象是字符 在多媒体程序中处理的对象是声音,图像。
1、数据结构研究的方向:
当今计算机应用的特点:
所处理的数据量大且具有一定的关系; 对其操作不再是单纯的数值计算,而更多地是需
Hale Waihona Puke 要对其进行组织、管理和检索。
应用举例1——学籍档案管理
假设一个学籍档案管理系统应包含如下表1-1
所示的学生信息。
学 号 99070101 99070102 99070103 99070104 ......
例如:一本书的信息:由书名、作者、出版社和分类 号等数据项组成。
(4)数据对象(Data Object): 是相同的数据元素的集合
例如:图书检索程序处理的是某图书馆的所有图书
学生信息的检索是处理某个系或学校的所有学生
用C语言来描述关于数据元素、数据项的描述
定义结构体:
struct student { long number; char name[10]; char sex[3]; int age; long cj; };
数据 结构
数据结构的定义
数据结构的形式定义为: 数据结构是一个二元组 Data_Structure=(D,S) 其中:D是数据元素的有限集,S是D上关系的有限集。 例如:一年十二个月的数据结构表示方法。 Data_Structure =(D,S) D={Jan, Feb, Mar, Apr, may, Jun, Jul, Aug, Sep, Oct, Nov, Dec} S={< Jan, Feb >,< Feb, Mar >,< Mar, Apr >,< Apr, may >,< may, Jun >,< Jun, Jul >,< Jul, Aug >,< Sep, Oct >,< Oct, Nov >,< Nov, Dec >}
实际问题中对象之间的关系—— 学生成绩管理
关系:线性 特征:一个直接前趋, 一个直接后继
学号 A07001 姓名 王萍
学生成绩表
大学 英语 90 C 语言 85 数据 结构 95 … …
A07002
A07003 A07004 A07005 : A07001 A07002 A07003 A07004
(2)数据元素(Data Element): 是数据的基本单位,表示一个事物的一组数据 一个数据元素可由若干个“数据项”(Data Item) 组成 这种由多个数据项组成的数据元素,通常又称为记
录(Record)。
(3)数据项(Data Item): 是构成数据元素的数据,是数据不可分割的最小 单位。
数据结构又包括数据逻辑结构和数据物理结构。
逻辑结构:是指数据元素之间的相互联系关系;
物理结构:又称存储结构,是数据元素在计算机内
的存储方式。即数据结构在计算机中的表示(又称
映象),它不仅存储了数据元素的数据信息,还存
储了数据元素之间的关系信息。
数据逻辑结构
数据逻辑结构:是数据元素之间的相互联系方式
…….
1400 ……. 1536
……..
元素2 …….. 元素3
…….
1536 ……. 1346
数据逻辑结构与存储结构的关系
一个逻辑结构可能存在多个存储结构。 例,线性数据为
…
3 5 7
{3,5,7}
372F08 7 NULL
12FF74 12FF78 12FF7C
372F50
5 372F08
姓 名 李 军 王颜霞 孙 涛 单晓宏 ......
学生基本情况 性 别 出生年月 男 80.12 女 81.2 男 80.9 男 81.3 ...... ......
...... ...... ....... ...... ...... ......
特点:
每个学生的信息占据一行,所有学生的信息按学号顺序依次 排列构成一张表格;
存储地址
存储内容
元素1 元素2 ……..
Lo
Lo+m
每个元素占m 个存储单元
顺序存储结构
Lo+(i-1)*m
元素i ……..
Lo+(n-1)*m
元素n
用C语言表示:用数组来实现
数据存储结构
2、链式存储结构:
使用指针把相互直接关联的结点连接起来
指针:是指向物理存储单元地址的变量 结点:是由数据元素域和指针域组成的一个结构体