数据结构 黄刘生 0512-87161118(O) 0551-3602445(L).

Slides:



Advertisements
Similar presentations
一、 一阶线性微分方程及其解法 二、 一阶线性微分方程的简单应用 三、 小结及作业 §6.2 一阶线性微分方程.
Advertisements

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
第一章 绪论 学习提要 1.1 什么是数据结构 1.2 基本概念 1.3 抽象数据类型 1.4 算法及其分析.
复习: :对任意的x∈A,都有x∈B。 集合A与集合B间的关系 A(B) A B :存在x0∈A,但x0∈B。 A B A B.
第1章 绪论 数据结构(C++描述).
余莉 1236 首页 > 课程总览 > 信息技术学院 > 数据结构
数据结构 DATA STRUCTURE.
数据结构(C语言版) Data Structure
数 据 结 构 主讲人:文 军.
Oracle数据库 Oracle 子程序.
第1章 绪论 本章主要内容 1.1 什么是数据结构 1.2 基本概念和术语 1.3 数据类型和抽象数据类型 1.4 算法描述与算法评价.
数据结构 主讲:庄越.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
计算机基础知识 丁家营镇九年制学校 徐中先.
任课教师:赵玉艳 电话: 邮箱: 数据结构 第1章 绪论(一) 任课教师:赵玉艳 电话: 邮箱: 1/
计算机软件技术基础 数据结构与算法(2).
数据结构 袁平波
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
第一章 绪论 早期:数值计算 —— 运算对象是简单的整型、实型或布尔类型数据 中后期:非数值计算 ——
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第2讲 绪论(二).
数 据 结 构 计 算 机 学 院 肖明军
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第二章 Java语言基础.
动态规划(Dynamic Programming)
CPU结构和功能.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
顺序表的插入.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
1 School of Computing and Information Engineering.
$9 泛型基础.
顺序表的删除.
( data structures, Algorithms and Applications in C++)
cn/~dongeliu/dsa.html 刘 东 信息学院6系 中国科学技术大学
第 四 讲 线性表(二).
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
第一章 绪论 1.1 引言 1.2 逻辑结构和存储结构 1.3 算法.
2.2矩阵的代数运算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
西安交通大学计教中心 ctec.xjtu.edu.cn
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
第二部分 数据结构—— 用面向对象方法与C++描述.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
高等学校计算机专业教材 数据结构 袁平波
顺序结构程序设计 ——关于“字符串”和数值.
第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
Sssss.
Presentation transcript:

数据结构 黄刘生 0512-87161118(O) 0551-3602445(L)

Ch.1 绪论 重要性 人类社会已步入信息社会 “计算”已成为理论研究、实验研究之后的第3种科学研究手段 “给我一根杠杆,我就能撬动地球” “给我一个接口,我就能驱动地球”

§ Ch.1 绪论 信息领域 硬件 软件-----核心问题是算法 算法实际上是加工数据的过程 算法+数据结构=程序设计(N.Wirth,84年图灵奖得主) 产品 软 件 本课程是IT所有学科的核心课程

§ Ch.1 绪论 先修课程及条件 程序设计的经验、C、离散数学、概率分析 特点:抽象、难度 考核: 参考书 C++ 数据结构,William Ford 清华影印版 数据结构和程序设计, Robert,Kruse.2nd版 算法导论,Thomas H. Corman等

能由计算机程序识别、存储和加工处理的符号集合 §1.1 基本概念和术语 数据:信息载体 能由计算机程序识别、存储和加工处理的符号集合 所有能够数字化的信息均可认为是数据 数据元素:数据的基本单位 同义词:元素、结点、顶点、记录、对象、元组等 数据项:具有独立含义的最小标识单位 同义词:字段、域、属性等

§1.1 基本概念和术语 数据结构:没有统一定义,通常指数据元素之间的相互关系,即数据的组织形式 数据的逻辑结构:数据元素之间的逻辑关系 数据的存储结构:数据元素及其关系在计算机存储器内的表示 数据的运算:对数据施加的操作

数据类型:是一个值的集合以及定义在这些值上的一组操作的总称,可看作是高级语言提供的数据结构 §1.1 基本概念和术语 数据类型:是一个值的集合以及定义在这些值上的一组操作的总称,可看作是高级语言提供的数据结构 原子类型:值不可分,一般是基本的预定义类型 int,char等,定义了“+”,“-”等 结构类型:可供用户定义的新类型,构造类型、导出类型、派生类型等 由基本类型组织而成,如sturct等

抽象的数据组织和与之相关的操作,可看作是数据的逻辑结构及其在逻辑结构上定义的抽象操作 §1.1 基本概念和术语 抽象数据类型(Abstract Data Type) 抽象的数据组织和与之相关的操作,可看作是数据的逻辑结构及其在逻辑结构上定义的抽象操作 特点 ①封装与隐藏:将数据和操作封装在一起,内部结构和实现细节对外屏蔽,实现信息隐藏 ②抽象:用户只能通过ADT里定义的接口和说明来访问和操作数据。他反映了程序设计的两层抽象: 概念层(抽象)---ADT、类说明 实现层---类实现,相当于普通类型 应用层----如main(){…},通过操作对象解决实际问题

§1.1 基本概念和术语 ADT ADT_Name{ 抽象数据类型(Abstract Data Type) Data: 数据结构说明 Operations: Constructor://构造函数,创建对象实例 Operation1://用C++或C函数原型描述 input: Preconditions://初始条件,执行本操作前系统 //需满足的状态 process://对数据执行的操作 output://对返回数据的说明 Postconditions://执行本操作后系统的状态 Operation2: }

§1.1 基本概念和术语 行:结点(对象、记录、元组等); 数据结构举例 系别 姓名 职称 SCI EI 经费 1 张明 教授 5 20 王华 6 3 15 … 23 李立 60 行:结点(对象、记录、元组等); 列:数据项(属性、域、字段等) 逻辑结构:开始结点?终端结点?内部结点? 结点之间的逻辑关系:有且仅有1个开始结点和1个终端结点,表中任1结点最多只有1个直接前驱和1个直接后继-----线性关系 存储结构:用数组实现,还是用指针实现? 运算:创建、插入、删除、查找等

§1.1 基本概念和术语 数据结构(逻辑结构)分类 存储结构分类 线性结构:任一结点最多只有1个直接前驱和1个直接后继 非线性结构:一结点可有多个直接前驱和多个直接后继 集合结构:元素间无关系,只有元素是否属于集合的关系 存储结构分类 (1)顺序存储方法 逻辑上相邻的结点存储在物理位置上相邻的存储单元里 结点间的逻辑关系由存储单元的邻接关系来体现 借助于数组描述 应用于线性的数据结构,非线性的数据结构的线性化

§1.1 基本概念和术语 存储结构分类 (2)链接存储方法 该方法不要求逻辑上相邻的结点在物理位置上亦相邻 借助于指针来表示结点间的逻辑关系 (3)索引存储方法 在存储结点信息的同时,建立附加的索引表。 表中每项称为索引项 (关键字,地址) 稠密索引:每个结点对应1个索引项 稀疏索引:一组结点对应1个索引项 (4)散列存储方法 根据结点的Key直接计算出该结点的存储地址。

§1.1 基本概念和术语 数据结构3方面之联系 同一逻辑结构的不同存储结构,则用不同名称称谓 例如, 线性表顺序表 链表 散列表 运算不同,称谓也不同 线性表栈、队列 顺序栈、顺序队列

§1.2 算法描述 分析 算法 重要性:数据的运算是通过算法描述的 定义:非形式地说,算法是任意一个良定义的计算过程,它以一个或多个值作为输入,并产生一个或多个值作为输出。因此,一个算法就是一系列将输入转换为输出的计算步骤。 5要素 输入、输出、有穷性(每条指令的执行次数须有限) 确定性、可行性(每条指令执行时间须有限) 算法与程序的联系与区别

§1.2 算法描述 分析 输入实例 一个问题的输入实例是由满足问题陈述中的限制、并能计算出该问题解的所有输入构成的。 算法描述 自然语言、数学语言、伪语言、程序语言等均可 本课程以C为主,但不拘泥于细节 算法评价 正确 时空性能 易读、易编码、易调试等

§1.2 算法描述与分析 算法分析 算法的时间是每语句执行时间的总和 每语句的执行时间=该语句执行次数(频度) X该语句执行1次的时间 假定:每语句执行1次的时间为1个时间单位 则:算法的执行时间=∑各语句频度 问题的规模(Size)n 输入量的大小,如… 时间复杂度:算法的运行时间,是问题规模的函数

§1.2 算法描述与分析 时间复杂度 例1:(p15)矩阵乘法 for ( i=0; i<n; i++) //n+1 for ( j=0; j<n; j++) { //n(n+1) C[i] [j]=0; //n2 for ( k=0;k<n; k++) //n2(n+1) C[i][j]=C[i][j]+A[i][k]*B[k][j]; //n3 } 详细分析: T(n)=2n3+3n2+2n+1 简单分析:频度最大的语句 T(n)= =n3

从宏观上评价时间性能,只关心当n趋向无穷大时,T(n)的数量级(阶) §1.2 算法描述与分析 渐近时间复杂度(简称时间复杂度) 从宏观上评价时间性能,只关心当n趋向无穷大时,T(n)的数量级(阶) 即:T(n) 和n3同阶,数量级相同 记作:T(n)=O(n3)

§1.2 算法描述与分析 大O的数学定义 若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在两个正的常数c和n0, 使得当n≥n0时都满足0≤T(n)≤c·f(n)。 平均性能 等概率假设 空间复杂性 S(n)=O(g(n))

§1.2 算法描述 分析 错误处理函数:简化错误处理代码 # include <stdlib.h> //其中有exit的说明 # include <stdio.h> //其中有stderr的说明 void Error(char * message) { fprintf (stderr, “Error: % s \ n”, message); //输出错误信息 exit(1); //终止程序,返回1给操作系统 }

§1.2 算法描述 分析 关于引用 当一变量声明为引用时,即成为被引用对象的“别名” 相当于指针常量