高等学校计算机专业教材 数据结构 袁平波 2018.9 课程主页:http://staff.ustc.edu.cn/~ypb.

Slides:



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

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
《程序设计实践》 孙辉 理工配楼104A
第一章 绪论 学习提要 1.1 什么是数据结构 1.2 基本概念 1.3 抽象数据类型 1.4 算法及其分析.
数据结构 DATA STRUCTURE.
数据结构 张秀虹
数据结构(C语言版) Data Structure
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
《高等数学》(理学) 常数项级数的概念 袁安锋
数 据 结 构 主讲人:文 军.
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
第十章 内部排序 知识点3:快速排序.
教材: 《数据结构(C语言版)》严蔚敏、吴伟民编著,清华大学出版社 主要参考教材: 《数据结构》 张乃孝编著,高等教育出版社
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
《数据结构》课程简介 李武军 南京大学计算机科学与技术系 2016年秋季.
任课教师:赵玉艳 电话: 邮箱: 数据结构 第1章 绪论(一) 任课教师:赵玉艳 电话: 邮箱: 1/
数据结构 袁平波
走进编程 程序的顺序结构(二).
辅导课程六.
第2讲 绪论(二).
1.1 数据结构讨论的范畴 1.2 基本概念 1.3 算法和算法的量度.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第一章 函数 函数 — 研究对象—第一章 分析基础 极限 — 研究方法—第二章 连续 — 研究桥梁—第二章.
第二章 Java语言基础.
动态规划(Dynamic Programming)
《数据结构》 (计科、电信专业).
数据结构 第一章 绪论.
分布式程序设计 姚斌 计算机科学与工程系 上海交通大学.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
顺序表的插入.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言版 软件与理论教研室 张泽宝 哈尔滨工程大学计算机科学与技术学院.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
1 School of Computing and Information Engineering.
顺序表的删除.
VisComposer 2019/4/17.
cn/~dongeliu/dsa.html 刘 东 信息学院6系 中国科学技术大学
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第 四 讲 线性表(二).
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
1.把下面的关系模式转化为E-R图 1)系(系号,系名,电话) 2)教师(工号,姓名,性别,年龄,系号)
1.2 子集、补集、全集习题课.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第一章 绪论 1.1 引言 1.2 逻辑结构和存储结构 1.3 算法.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
临界区问题的硬件指令解决方案 (Synchronization Hardware)
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
《偏微分方程》第一章 绪论 第一章 绪论 1.1.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
高等学校计算机专业教材 数据结构 袁平波
顺序结构程序设计 ——关于“字符串”和数值.
编译原理实践 6.程序设计语言PL/0.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

高等学校计算机专业教材 数据结构 袁平波 2018.9 课程主页:http://staff.ustc.edu.cn/~ypb

课程情况 60理论课时 30实验课时 课程考核 课堂要求 作业一章提交一次 10次,西区信院机房(电一楼) 周四(8.9.10),第5周开始 考试60-70%,平时(作业,出勤)10%,实验30-20% 6个实验,提交1-2份实验报告,其他实验随堂检查 课堂要求 请假在上课前完成

参考教材 实验指导教材

第二章 数据结构导论 2.2.1基本概念和术语 2.2.3数据类型和抽象数据类型 2.1《数据结构》讨论范畴 2.2《数据结构》相关概念 2.2.2数据结构 2.2.3数据类型和抽象数据类型 2.3算法及其描述和算法分析

2.1《数据结构》研究什么 数据结构的历史 数据结构正是讨论非数值类问题的对象描述、信息组织方法及其相应的操作 1968 美国唐·欧·克努特 设立《数据结构》课程 1976 瑞士 Niklaus Wirth 提出算法+数据结构=程序设计 数据结构正是讨论非数值类问题的对象描述、信息组织方法及其相应的操作 (1) 加工对象逻辑组织(2)存储到计算机 (3)数据运算 [例]、设有一个电话号码薄,有N个人的姓名和电话号码。要求设计一个程序,按人名查找号码,若不存在则给出查找失败的信息。

[例] 下棋 井子棋 非线性数据结构-树

[例] 交叉口交通灯设置(顶点着色问题) 非线性——图

2.2数据结构相关概念 2.2.1基本概念和术语 集合和关系 数据和信息 集合是若干具有共同可辨特征的事物的“聚合”,每个事物称该集合的元素或成员。 集合元素之间一般都具有某种“关系”。 数据和信息 数据是指描述客观事物且能由计算机处理的数值、字符符号的总称 信息是包含在数据中符号的含义。数据是信息的符号表示形式。

数据元素 是数据的基本单位,有时称记录、结点、顶点。其包括数据项(Data Item),数据项可以是原子项(性别)或组合项(出生日期) 数据对象 是性质相同的数据元素的集合,是数据的一个子集 。 关键码(key) 数据元素中起识别作用的数据项。有主次之分,能唯一识别的称主码,否则称次码。

2.2.2数据结构 特性相同的数据元素构成的集合中,如果在数据元素之间存在一种或多种特定的关系,则称之为数据结构 。 Data-Structure=(D,S)

[例] linear=(D,R) D={1,2,3,4,5,6,7,8,9,10} R={<1,2>,<2,3>,<3,4>,<4,5>,<5,6>,<6,7>, <7,8>,<8,9>,<9,10>}

[例] Tree=(D,R) D={a, b, c, d, e, f, g, h, i, j, k, l} R={<a,b>,<a,c>,<a,d>,<b,e>,<b,f>,<b,g>,<c,h>,<c,i>,<c,j>,<d,k>,<d,l>}

[例] graph=(D,R) D={1, 2, 3, 4, 5, 6, 7, 8, 9} R={<1,2>,<1,3>,<2,4>,<2,5>,<2,6>,<2,8>,<3,2>,<3,4>, <4,5>,<5,7>,<6,7>,<6,9>,<7,9>,<8,9>}

数据的操作:检索、排序、插入、删除、修改等 数据结构的三个方面: 线性表 栈 队列 线性结构 串及数组 数据的逻辑结构 树形结构 非线性结构 图形结构 顺序存储 数据的存储结构 链式存储 数据的操作:检索、排序、插入、删除、修改等

2.2.3数据类型和抽象数据类型 操作结果:〈操作结果描述〉 ADT=(D,S,P) 其中:D是数据对象,用结点的有限集合表示; S是D上的关系的集合,用结点间的序偶的集合来表示; P是对D的基本操作的集合。基本操作的 定义格式为: 基本操作名(参数表) 初始条件:〈初始条件描述〉 操作结果:〈操作结果描述〉

操作中的参数有两种 1)赋值参数 void add(int a,int b,int *c) {*c=a+b;} add(2,3,&c); 2)引用参数 void add(int a, int b, int &c) {c=a+b} add(2,3,c);

2. 3 算法及其描述和算法分析 1、算法:对问题求解的描述,为解决问题给出的一个确定的、有限长的操作序列。 1)正确性 2)具体性 3)确定性 4)有限性 5)可终止性 2、算法效率衡量方法与准则 : 时间复杂度:T(n)=O(f(n)) 空间复杂度:S(n)=O(g(n))

3、算法的描述:类C语言 预定义常量和类型 内存的动态分配与释放 输入输出 赋值语句 串连、成组、条件赋值 const TRUE=1;typedef int status; 内存的动态分配与释放 new 、Delete 取代malloc和free 输入输出 cin、cout 取代 scanf和printf 赋值语句 串连、成组、条件赋值 变量1=变量2=…=变量n=表达式 (变量1,变量2…变量n)=(表达式1,表达式2,…表达式n) 结构变量={值1,值2,…,值n} 数组变量1[起始下标..截止下标]=数组变量2[起始下标..截止下标]

“O” 的形式定义 若f(n)是正整数n的一个函数,则xn=O(f(n))表示存在一个正的常数M,使得当nn0时都满足|xn|M|f(n)|; 换句话就是说这当整型自变量n趋向于无穷大时, xn和f(n)的比值是一个不等于0的常数。

②、for (i=1;i<=n;i++) {x++;s+=x;} O(n) ③、for( i=1;i<=n;i++) 分析下列三个程序段: ①、x++;s=0; O(1) ②、for (i=1;i<=n;i++) {x++;s+=x;} O(n) ③、for( i=1;i<=n;i++) for (j=1;j<=n; j++) {x++; s+=x;} O(n2) 、f(n)=2n3+5n2+7n+c;(c为某一常数),则 T(n)=O(n3)。

可变 时间复杂度 (输入有关)最坏,最好,平均 [例] 起泡排序 void bubble_sort(int a[], int n){ for (i=n-1, change=TRUE; i>0 && change; --i) { change = FALSE; for (j=0; j<i; ++j) if (a[j] > a[j+1]) { w = a[j]; a[j]= a[j+1]; a[j+1]= w; change = TRUE } } } // bubble_sort 时间复杂度O(n2) 可变 时间复杂度 (输入有关)最坏,最好,平均

常见函数的增长率