数据结构第1章 绪论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} ADT Complex
信息隐蔽和数据封装,使用与实现相分离
接口或用 户界面
查找 插入
删除 修改
数据类型 的物理实 现封装
线性表
抽 象 数 据 类 型
复习c/c++语言的内容: c/c++程序的结构组成与不同 1、结构体 2、定义类型 3、指针类型及操作 4、动态空间的分配和删除 5、函数调用及参数传递(引用类型) 6、文件预处理(include) 7、c++中的引用类型及输入 、输出 8、多文件的程序结构
顺序存储 链式存储
运算的实 现依赖于 存储结构
数据的运算:插入、删除、修改、查找、排序
数据类型
定义:在一种程序设计语言中,变量所具有
的数据种类
FORTRAN语言:整型、实型、和复数型 C语言: 基本数据类型: char int float double void 构造数据类型:数组、结构体、共用体、文件
人机对奕问题
树
人机对弈:智 能化浪潮已经 汹涌而来
……..
……..
…...
…...
…...
…...
人机对弈阿尔法棋4比1击败李世石,这个事件非常轰动,
全球有10多亿人次在观看比赛。这样一次对弈,会让所有人得到 洗礼。这是个启蒙运动,受伤的是一些专业选手,但会激励两群 人:第一是程序员,第二是IT创业人士。我们相信机器智能可以 到来,未来的世界已经不仅是讲“互联网+”,而是到了我们与机 器为舞、为伴的世界。这是李世石和AlphaGo对弈里可以看到的未 来。
int add(int x,int y) {return x+y; } int main() {int a=10,b=20,z; //cin>>a>>b; z=add(a,b);//函数调用 out<<"x+y"<<"="<<z<<endl; return 0; }
C++程序由注释、编译预处理和程序主体组成。 C++程序可以由一个程序单元或多个程序单元构 成。每一个程序单元作为一个文件。 一个面向过程的C++程序的组织结构一般由三部 分组成:类型的定义(用户自定义类型)、函数 的实现和主函数。 如果比较的小程序,可以将这三部分写在同一个 文件中。 在规模较大的项目中,往往需要多个程序文件,
数据结构的研究内容为:
研究非数值计算的程序设计问题中计算机的操作 对象以及它们之间的关系和操作。
ቤተ መጻሕፍቲ ባይዱ
数据结构课程的形成和发展:
形成阶段: 60年代初期,“数据结构”有关的内容散见于操作系 统、编译原理和表处理语言等课程。1968年,“数据 结构”被列入美国一些大学计算机科学系的教学计划 。 发展阶段: 数据结构的概念不断扩充,包括了网络、集合代数论 、关系等“离散数学结构”的内容。 70年代后期,我国高校陆续开设该课程。
c/c++程序的结构组成与不同
标准C++ #include <iostream> using namespace std; int add(int x,int y) {return x+y; } int main() {int a=10,b=20,z; //cin>>a>>b; z=add(a,b);//函数调用 out<<"x+y"<<"="<<z;<<endl; return 0; }
元素i
…….. Lo+(n-1)*m
元素n
Loc(元素i)=Lo+(i-1)*m
h
1345
链式存储
元素2 1536 元素3 1346 元素4
h
元素1 1400
∧
存储地址 1345 1346 ……. 1400 ……. 1536
存储内容 元素1 元素4 …….. 元素2 …….. 元素3
指针 1400 ∧ ……. 1536 ……. 1346
1.2
基本概念和术语
1、数据(data)—所有能输入到计算机中去的描述客观事物 的符号 数值数据:整数、浮点数等,主要用于工程和科学计算。 非数值数据:字母,表格,程序,符号,图形,树、图 、网页 、节点等。 2、数据元素(data element)—数据的基本单位,也称结点 (node)或记录(record) 3、数据项(data item)—有独立含义的数据最小单位,也 称域(field)
14:03
第1章 绪论
教学目标
1. 了解数据结构研究的主要内容 2. 掌握数据结构中涉及的基本概念 3. 掌握算法的时间、空间复杂度及其分析的 简易方法
教学内容
1.1 数据结构的研究内容 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法与算法分析
1.1
数据结构的研究内容
②提高了程序的可读性和可维护性
ADT特点:①降低了软件设计的复杂性
抽象数据类型可以用以下的三元组来表示: ADT = (D,S,P)
数据对象 D上的关系集 D上的操作集
ADT抽象数据类型名{
ADT 常用 定义 格式
数据对象:<数据对象的定义>
数据关系:<数据关系的定义> 基本操作 :<基本操作的定义> } ADT抽象数据类型名
《数据结构》所处的地位:
介于数学、计算 机硬件和计算机 软件三者之间的 一门核心课程
数据结构在计算机学科中的地位
Web信息处理 队列、图、字符、矩阵、哈 希表、排序、索引、检索 数据库 线性表、多链表、 排序、B+树 算法分析与设计
人工智能 广义表、集合、有 向图、搜索树 操作系统 队列、存储管理 表、排序、目录树
图形结构——多个对多个,如图
存储结构 存储结构分为:
顺序存储结构——借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据 元素间的逻辑关系 索引存储 便于查找 散列存储
存储地址 存储内容
Lo 元素1 元素2 ……..
Lo+m
顺序存储
Lo+(i-1)*m
数据结构
申艳梅
shenyanm@yeah.net
计算机学院信管系
14:03
学习数据结构的目的和重要性
编程基础
程序=算法+数据结构(Niklaus Wirth教授)
计算机及相关专业考研考博课程 计算机等级考试课程 程序员考试课程
面试的主要内容
14:03
课程学习指导
课程特点:内容抽象、概念性强、内容灵活、不易掌握 • 1.提前预习、认真听课、多做练习、勤于上机实践 • 2.注意先修课程的知识准备 离散数学、C语言 • 3.注意循序渐进: 基本概念、基本思想、基本步骤、算法设计 • 4.注意培养算法设计的能力 理解所讲算法、对此多做思考:若问题要求不同, 应如何选择数据结构,设计有效的算法
std命名空间
如图2-1所示:假如学校的软件学院2011级的同学 有三个名字叫王晓的同学
区分同名学生
标准C++将新格式头文件中的内容全部放到了std命 名空间中,而非新格式的头文件中的内容被放到了 全局命名空间中。 如果程序中要引用标准C++新格式头文件中的函数, 就需要在程序中使用using namespace std;语句将 std命名空间中的标识符引入到全局命名空间。 虽然C++编译器提供了对新老格式头文件的同时支持, 但标准的C++具有更多的新特性和功能,在程序设计 中建议使用新标准C++。
电子计算机的主要用途:
早期:
主要用于数值计算
后来:
处理逐渐扩大到非数值计算领域,能处 理多种复杂的具有一定结构关系的数据
书目自动检索系统
线性表
书目文件
001 002 003 004 ……
高等数学 理论力学 高等数学 线性代数 ……
樊映川 罗远祥 华罗庚 栾汝书 ……
S01 L01 S01 S02 ……
通常一个项目(程序)可以划分为三个文件: 类型声明(*.h文件) 函数实现 函数使用文件(main()所在的*.cpp文件)。 对于更为复杂的程序,每一个类型(数据结构) 都有单独的定义和实现文件,采用这样的组织 结构可以对不同的文件进行单独的编写、编译, 最后再连接,利于程序的调试和修改,实现多 人合作开发。
14:03
课时安排:
课程总学时64学时,其中理论教学学时数48学时 ,实践教学学时数16学时。每周4学时。
考核方式
• 平时成绩 : 30% – 作业、小测验、实验 – 课堂纪律 • 期末成绩 : 70%(闭卷笔试)
14:03
教材和参考书
教材: • 《数据结构》978-7-115-23490 严蔚敏,李冬梅,人民邮电出版社出版 参考书: • 《数据结构C语言版》,严蔚敏,清华大学出 版社 • 《数据结构——用面向对象方法与C++描述》 ,殷人昆等,清华大学出版社 • 《数据结构与算法》 张铭 高教出版社
数据类型是一组性质相同的值的集合, 以及 定义于这个集合上的一组运算的总称
抽象数据类型
(ADT: Abstract Data Types)
抽象:从许多事物中,舍弃个别的、非本质的属性,抽出 共同的、本质的属性,叫抽象,是形成概念的重要 手段。
抽象数据类型--更高层次的数据抽象 由用户定义,用以表示应用问题的数据模型 由基本的数据类型组成, 并包括一组相关的 操作
三者之间的关系:数据 > 数据元素 > 数据项
例:学生表 > 个人记录 > 学号、姓名……
4、数据对象(Data Object):相同特性数据元素的
集合,是数据的一个子集 整数数据对象 N = { 0, 1, 2, … } 学生数据对象 • 学生记录的集合
5、数据结构(Data Structure)是相互之间存
北京林业大学信息学院
例如,抽象数据类型复数的定义:
ADT Complex {
数据对象:
D={e1,e2|e1,e2∈RealSet }
数据关系:
R1={<e1,e2> | e1是复数的实数部分
| e2 是复数的虚数部分 }
基本操作: Creat( &C, x, y)
操作结果:构造复数 C,其实部和虚部 分别被赋以参数 x 和 y 的值。
逻辑结构
划分方法一
(1)线性结构---有且仅有一个开始和一个终端结点,并且所有 结点都最多只有一个直接前趋和一个后继。 例如:线性表、栈、队列、串 (2)非线性结构---一个结点可能有多个直接前趋和直接后继。 例如:树、图
逻辑结构
划分方法二
集合——数据元素间除“同属于一个集合”外,无其它关系
线性结构——一个对一个,如线性表、栈、队列 树形结构——一个对多个,如树
图形图像 队列、栈、图、矩阵、 空间索引树、检索 编译原理 字符串、栈、哈希 表、语法树 计算复杂性理论
数据结构与算法
程序设计语言
概率统计 北京林业大学信息学院
计算概论
14:03 集合论与图论
课程目的
• 能够分析研究计算机加工的对象的特性,获 得其逻辑结构,根据需求,选择合适存贮结 构及其相应的算法; • 学习一些常用的算法; • 复杂程序设计的训练过程,要求编写的程序 结构清楚和正确易读; • 初步掌握算法的时间分析和空间分析技术
在一种或多种特定关系的数据元素的集合。
数据结构是带“结构”的数据元素的集合, “结构”就是指数据元素之间存在的关系。
数据结构的两个层次:
逻辑结构--数据元素间抽象化的相互关系,与数据的存储无关,独 立于计算机,它是从具体问题抽象出来的数学模型。
存储结构(物理结构)---数据元素及其关系在计算机存储器中的存储方式。
数据的运算(操作) • 逻辑结构和存储结构都相同, 但运算不同, 则 数据结构不同. 例如, 栈与队列 • 对于一种数据结构, 常见的运算
–插入 –删除 –修改 –查找 –排序
线性结构
逻辑结构 唯一 存储结构 不唯一
数据的逻辑结构
非线性结构
线性表 栈、队列 串、数组
树形结构
图形结构
数据的存储结构
例:交通最短路径问题:城市A到 城 市B有多条线路,但每条线路的交通 费(或所需时间)不同,那么,如 何选择一条线路,使总费用(或总 时间)最少?
100
图
B
30
10 10
60
A
D
20
C E
50
其他:网络工程图 、网络通信图等等
14:03
求解非数值计算的问题: 设计出合适的数据结构及相应的算法 即:首先要考虑对相关的各种信息如何表示、组织 和存储?
GetReal( C, &realPart )
初始条件:复数已存在。
操作结果:用realPart返回复数Z的实部值。
GetImag( C, &ImagPart )
初始条件:复数已存在。 操作结果:用ImagPart返回复数Z的虚部值。
Add( C1,C2, &sum )
初始条件:C1, C2是复数。 操作结果:用sum返回两个复数C1, C2 的 和值。 ......