数据结构 第一章 绪论

合集下载

数据结构第1章绪论

数据结构第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章 数据结构绪论

第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章 绪论

数据结构第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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学模型 非形式算法
抽象数据模型 伪语言程序
数据结构 可执行程序
16
抽象数据类型(Abstract Data Type)
? 线性表的抽象数据类型的描述:
ADT Linear_list 数据元素 所有ai属于同一数据对象, i=1,2,……,n n≥0; 逻辑结构 所有数据元素ai(i=1,2,…,n-1)存在次序关系
15
抽象数据类型(Abstract Data Type)
? 定义:
抽象数据类型(简称ADT)是指基于一类逻辑关系的数 据类型以及定义在这个类型之上的一组操作。
一个抽象数据类型确定了一个模型,但将模型的实现细节 隐藏起来;它定义了一组运算,但将运算的实现过程隐藏 起来。
用抽象数据类型的概念来指导问题的求解过程:
是数据的一个子集。 例如:
整数集合: N={0,±1,±2,…} 无限集 字符集合: C={ˊAˊ,Bˊ,…,ˊZˊ} 有限集
8
数据
? 数据特点
可放入机器(与机器的关联性) 可被加工(能被处理)
? 数据结构
数据元素——组成数据的基本单位 (与数据的关系是集合的个体)
数据对象——性质相同的数据元素的集合 (与数据的关系是集合的子集)
数据元素是 组成数据的基本单位 ,是数据 集合的个体,在计算机中通常作为一个整体进行 考虑和处理。 例如:
数据项
学 号 姓 名 性 别 籍 贯 出生年月 住 址
101 赵虹玲 女
...
...
...
河北 ...
1983.11 ...
北京 数

...
元 素
7
数据对象(Data Object)
? 定义: 数据对象是 性质相同的数据元素的集合 ,
? 数据的抽象 ? 抽象数据类型 (Abstract Data Type) ? 抽象数据类型实现 ? ADT的表示与实现 ? 面向对象的概念 ? 结构化的开发方法与面向对象开发方法不同点
14
数据的抽象
? 汇编语言中十进制表示的数据 98.65、9.6E3等, 它们是二进制数据的抽象 ;
?高级语言中,给出更高一级的数据抽象,如整 型、实型、字符型等, 还可以进一步定义更高级的数据抽象,如各种表、 队、栈、树、图、窗口、管理器等复杂的抽象数 据类型。
...
...
... ...
...
...
10
数据结构(Data Structure)
树型结构
学校
图结构
1பைடு நூலகம்2


研究机构
5
3
教研室 实验室
4
11
数据类型(Data Type)
? 定义: 数据类型是一组性质相同的值集合以及定
义在这个值集合上的一组操作的总称 。
如在高级语言中,整型类型的取值范围为: -32768~+32767 ,运算符集合为加、减、乘、除、 取模,即 +、-、*、/、%。
基本的数据结构
栈和队列(第3章) 线性结构
串(第4章)
数组和广义表(第5章) 非线性结构 树 (第6章)
图 (第7章)
查找技术(第8章)
基本的数据处理技术
3
排序技术(第9、10章)
第1章 绪 论
?1.1 什么是数据结构(定义) ?1.2 数据结构的内容(研究范围) ?1.3 算法 ?1.4 算法描述的工具 ?1.5 对算法作性能评价 ?1.6 关于学习数据结构的学习
9
数据结构(Data Structure)
? 定义:
数据结构是指相互之间存在一种或多种特 定关系的数据元素集合 ,是带有结构的数据元 素的集合,它指的是数据元素之间的相互关系, 即数据的组织形式。 例如表结构:
学 号 姓 名 性 别 籍 贯 出生年月 住 址
101 赵虹玲 女 河北 1983.11 北京
12
数据类型(Data Type)
? 高级语言中的数据类型分为两大类:
1.原子类型 ,其值不可分解。如 C语言中的标准类 型(整型、实型、字符型、)。
2.结构类型 ,其值是由若干成分按某种结构组成的, 因此是可以分解的,并且它的成分可以是非结构的, 也可以是结构的。
13
指针类型属于哪种类型?
数据抽象与抽象数据类型
基本操作的定义格式为:<操作名称> (参数表) 操作前提:<操作前提描述> 操作结果:<操作结果描述>
19
ADT的表示与实现
? 关于参数传递 :
参数表中的参数有值参和变参两种。
用标准C语言表示和实现ADT描述时,主要有两个方面: 一、通过结构体将int、float等固有类型组合到一起,构成一 个结构类型,再用typedef为该类型或该类型指针重新起一个 名字。 二、用C语言函数实现各操作。
<ai, ai+1>,ai无前趋,an无后继; 操作 设L为Linear_list
Initial(L)初始化空线性表; Length(L)求线性表的表长; Get(L,i)取线性表的第i个元素; Insert(L,i,b)在线性表的第i个位置插入元素b; Delete(L,i)删除线性表的第i个元素;
耿国华 等编著
1
6/24/2020
课前说明
? 上课时间
– 单周:周一、周二的1、2节课 – 双周:周一的1、2节课
? 成绩评定
– 卷面(70%)+平时(30%) – 平时成绩:作业(20%) +点名(10%)
2
关于本书内容编写说明
数据结构的基本概念 (第1章)
线性表(第2章)
基︵ 本三 结部 构分︶
? 定义:
数据是描述客观事物的数值、字符以及能输 入机器且能被处理的各种符号集合 。
数据包含整型、实型、布尔型、图象、字符、声 音等一切可以输入到计算机中的符号集合。
例如对 C源程序
C编译程序
C链接程序
源程序
目标程序
可执行程序
(.c)
(.obj)
(.exe)
6
数据元素(Data Element)
? 定义:
4
1.1 什么是数据结构(定义)
数据结构的相关名词: ? 数据(Data) ? 数据元素( Data Element ) ? 数据对象( Data Object ) ? 数据结构( Data Structure ) ? 数据类型(Data Type) ? 数据抽象与抽象数据类型
5
数据(Data)
17
抽象数据类型实现
实现的三种方法: ? 传统的面向过程的程序设计 ?“包”、“模型”的设计方法 ?面向对象的程序设计 (Object Oriented Programming ,简称OOP)
18
ADT的表示与实现
? ADT的定义:
ADT <ADT名> { 数据对象:<数据对象的定义> 结构关系:<结构关系的定义> 基本操作:<基本操作的定义> }ADT <ADT名>
相关文档
最新文档