数据结构1(清华大学)ppt
合集下载
c语言数据结构清华出版社第一张课件
例如:一个有12位的十进制数,可以用三个4 位的十进制数表示。 3214,6587,9345---a1( 3214),a2(6587),a3(9345) a1,a2,a3之间存在次序关系: <a1,a2>,<a2,a3> 颠倒则错误
例二:2行3列的二维数组{a1,a2,a3,a4,a5,a6} a1 a4 a2 a5 a3 a6
可见,在顺序存储结构中只包含数据元素本身的信息, 而链式存储结构中以"由数据元素 x 的存储映象和附 加指针合成的结点"表示数据元素。
存储结构的描述方法随编程环境的不同而不同,当用高级程序涉及的油 印间相编程时,通常可用高级编程语言中提供的数据类型描述之。 例如,当以"顺序存储结构"表示前述定义的长整数时,可将它定义为: typedef int Long_int[3]; 同样,此时对数据元素也要借用高级编程语言中的数据类型描述之。 对每一个数据结构而言,必定存在与它密切相关的一组操作。若操作 的种类和数目不同,即使逻辑结构相同,数据结构能起的作用也不同。 不同的数据结构其操作集不同,但下列操作必不可缺: 1) 结构的生成; 2) 结构的销毁; 3) 在结构中查找满足规定条件的数据元素; 4) 在结构中插入新的数据元素; 5) 删除结构中已经存在的数据元素; 6) 遍历。
第一章 绪论
数据结构课程的意义:
有建议或问题:hht95@ 本章讨论的4个问题: 本章讨论的 个问题: 个问题 1、什么是数据结构(讨论范畴) 2、基本概念和术语 3、抽象数据类型的表示与实现 4、算法分析
一、讨论范畴 这是一门与程序设计紧密相关的课程。 美国计算机专家 PASCAL创始人 Niklaus Wirth教授 1976年出版 《算法+数据结构= 程序设计》一书。
数据结构第一章 (清华 殷人昆版)
什么是数据结构 抽象数据类型及面向对象概念 数据结构的抽象层次 C++描述面向对象程序 用C++描述面向对象程序 算法定义 模板 性能分析与度量
作为抽象数据类型的数组 顺序表 稀疏矩阵 字符串
单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵Leabharlann 栈 表达式求值 队列 优先队列
递归的概念 递归过程与递归工作栈 递归与回溯 广义表
�
清华大学计算机系 殷人昆
与国际当前教学内容接轨
基于抽象数据类型 完全实现信息隐蔽 引入简单算法分析 结合结构化程序设计与 面向对象程序设计 已有三轮教学基础 语言流畅,概念清晰
先修课程
C / C++ 程序设计 简单的集合 / 图论知识
主要内容
数据结构概念 数组与顺序表 链表 栈,队列与优先权队列 递归,回溯与广义表 树与森林 集合与搜索 图 排序 索引与散列(文件)
树和森林的概念 二叉树 二叉树遍历 二叉树的计数 线索化二叉树 堆 树与森林 霍夫曼树
集合及其表示 并查集 静态搜索表 二叉搜索树 AVL树 AVL树
图的基本概念 图的存储表示 图的遍历与连通性 最小生成树 最短路径 活动网络
概述 插入排序 交换排序 选择排序 归并排序 基数排序 外排序
静态索引结构 动态索引结构 散列 可扩充散列
附录A 用C++描述面向对象程序 ++描述面向对象程序
用模板定义C++中的类 类中成员函数的实现 函数名重载和操作符重载 C++中的主函数
目前清华大学已有 目前清华大学已有2届学生使用 清华大学 过此教材, 过此教材, 人数达 350 人; 中 专升本在学人 央广播电视大学专升本 央广播电视大学专升本在学人 数 8000 人.
数据结构基础PPT课件
求解函数perm:
void perm (char *a, const int k,const int n) { // n 是数组a的元素个数,生成a[k],…,a[n-1]的全排列
int i; if (k = = n-1) { // 终止条件,输出排列
for ( i=0; i<n; i++) cout << a[i] << “ ”; // 输出包括前 // 缀,以构成整个问题的解
29
其中各语句的程序步数如下所示:
其总程序步数是2n+3。
30
例的1.6程设序r步su数m如(a下, n:)的程序步数为Trsum(n),其各语句
= 可2+见Tr,sum当(nn-1=)。0时Trsum(0) = 2;当n > 0时Trsum(n)
31
通过反复代入可得: Trsum(n) = 2+ Trsum(n-1) = 2+2+Trsum(n-2) = 2*2+ Trsum(n-2) = 2+2+2+ Trsum(n-3) = 2*3+ Trsum(n-3) … = 2n+ Trsum(0) = 2n+2 所以rsum的程序步数为2n+2。
注意:这些定义不依赖于数据对象的具体表示,也
没有给出操作实现的过程。
10
数据抽象和封装机制的意义: (1)简化软件开发:
假设一个问题经分析将使用A、B、C三个数据 类型和协调代码求解。
(a)四位程序员,可由其中三位程序员各开发 一个数据类型,另一位程序员实现协调代码。
(b)一位程序员,数据抽象也可减少其在某一 具体时间需要考虑的范围。
void perm (char *a, const int k,const int n) { // n 是数组a的元素个数,生成a[k],…,a[n-1]的全排列
int i; if (k = = n-1) { // 终止条件,输出排列
for ( i=0; i<n; i++) cout << a[i] << “ ”; // 输出包括前 // 缀,以构成整个问题的解
29
其中各语句的程序步数如下所示:
其总程序步数是2n+3。
30
例的1.6程设序r步su数m如(a下, n:)的程序步数为Trsum(n),其各语句
= 可2+见Tr,sum当(nn-1=)。0时Trsum(0) = 2;当n > 0时Trsum(n)
31
通过反复代入可得: Trsum(n) = 2+ Trsum(n-1) = 2+2+Trsum(n-2) = 2*2+ Trsum(n-2) = 2+2+2+ Trsum(n-3) = 2*3+ Trsum(n-3) … = 2n+ Trsum(0) = 2n+2 所以rsum的程序步数为2n+2。
注意:这些定义不依赖于数据对象的具体表示,也
没有给出操作实现的过程。
10
数据抽象和封装机制的意义: (1)简化软件开发:
假设一个问题经分析将使用A、B、C三个数据 类型和协调代码求解。
(a)四位程序员,可由其中三位程序员各开发 一个数据类型,另一位程序员实现协调代码。
(b)一位程序员,数据抽象也可减少其在某一 具体时间需要考虑的范围。
数据结构(C语言版中)清华大学出版社ppt
p->data=x;
p->next=top; top=p;
修改栈顶指针
return top;
} 25
链栈的出栈操作
an出栈,使工作指针q 指向要出栈结点,然
后修改栈顶指针: top=top->next
26
链栈出栈操作
LinkStack *pop( LinkStack *top)
{ LinkStack *q; if(!top) /*说明指针top指向NULL*/ {printf(“\n链栈是空的!”); return NULL;} q=top; top=top->next; free(q); return top;
29
void conversion(int N, int r)
解题思路如下:
{ int x=N,y=r; SeqStack *s; /*是顺序栈*/
N是十进制数,要将N 转换成r进制数
s=initStack( ); /*构造一个顺序栈*/ while(N!=0) { push(s, N %r ); /*将N%r入栈*/
}
17
例3.1 用main函数以及display函数,调试上述各种栈的基
本操作算法。
#define Maxsize 50
typedef int datatype;
typedef struct{
{datatype stack[Maxsize]; int top;
}SeqStack;
void display(SeqStack *s) /*显示栈中所有元素值*/
15
顺序栈的入栈操作——例如用堆栈存放(A,B,C,D)
高地址M 低地址L
top
top D
数据结构(清华大学课件)
float GetReal( cpmplex Z );
// 返回复数 Z 的实部值 float Getimag( cpmplex Z ); // 返回复数 Z 的虚部值
void add( complex z1, complex z2, complex &sum ); // 以 sum 返回两个复数 z1, z2 的和
―数据抽象” 和“数据封装”
数据抽象 用ADT描述程序处理的实体
时,强调的是其本质的特征、其所能 完成的功能以及它和外部用户的接口 (即外界使用它的方法)。
数据封装 将实体的外部特性和其内部
实现细节分离,并且对外部用户隐藏
其内部实现细节
抽象数据类型的描述方法
ADT =(D,S,P)
其中: D 是数据对象, S 是 D 上的关系集, P 是对 D 的基本操作集。
又如,在 2 行 3 列的二维数组中六个元素 {a1, a2, a3, a4, a5, a6} 之间存在着两个关系: ―行” 的次序关系:
row = {<a1,a2>,<a2,a3>,<a4,a5>,<a5,a6>}
a1 a2 a3 a4 a5 a6
―列” 的次序关系:
col = {<a1,a4>,<a2,a5>,<a3,a6>}
InitComplex(z1,8.0,6.0);
InitComplex(z2,4.0,3.0);
Add(z1,z2,z3);
Multiply(z1,z2,z4);
if (Division (z4,z3,z)) {
GetReal (z, RealPart);
GetImag (z, ImagPart);
数据结构第一章ppt课件
一组操作 – ADT = ( D,S,P )
其中:D 是数据对象, S 是 D 上的关系集, P 是 D 的基本操作集
算法
• 算法 算法是对问题求解过程的一种描述,是 为解决一个或一类问题给出的一个确定 的、有限长的操作序列。重要特性:
– 有穷性 对于任意一组合法的输入值,在执行有穷步 骤之后一定能结束。
– 赋值方式不同
• 对字符指针变量,可用赋值语句赋值 • 字符数组,可在定义时初始化,不能整体赋值
– 指针变量的值是可以改变的
• 数组名代表数组的起始地址,是一个常量,而常 量是不能被改变的
结构体
• 结构体类型与结构体变量的定义 • 结构体变量的引用与初始化 • 结构体指针 • 结构体数组
结构体
– 形式参数和实际参数 – 值传递
函数
• 递归调用
– 一个函数在它的函数体内,直接或间接地调用它自 身
– 例如求N!(n>=0)
long power(int n) { long f; if(n>1) f=power(n-1)*n; else f=1; return (f); }
函数
• 数组作为函数参数
• 数组的定义 • 数组元素的引用 • 数组的元素的初始化 • 应用举例
数组
• 数组的定义 – 数据类型 数组名[常量表达式] – int a[10];
– 下标从0开始 – 数组名代表整个数组的首地址
数组
• 一维数组元素的引用
– 数组名[下标表达式]
• 一维数组的元素的初始化
– 数据类型 数组名[常量表达式]={初值表}
– 使用指向数组的指针变量来引用数组元素
main()
{ int array[10], *pointer=array, i;
其中:D 是数据对象, S 是 D 上的关系集, P 是 D 的基本操作集
算法
• 算法 算法是对问题求解过程的一种描述,是 为解决一个或一类问题给出的一个确定 的、有限长的操作序列。重要特性:
– 有穷性 对于任意一组合法的输入值,在执行有穷步 骤之后一定能结束。
– 赋值方式不同
• 对字符指针变量,可用赋值语句赋值 • 字符数组,可在定义时初始化,不能整体赋值
– 指针变量的值是可以改变的
• 数组名代表数组的起始地址,是一个常量,而常 量是不能被改变的
结构体
• 结构体类型与结构体变量的定义 • 结构体变量的引用与初始化 • 结构体指针 • 结构体数组
结构体
– 形式参数和实际参数 – 值传递
函数
• 递归调用
– 一个函数在它的函数体内,直接或间接地调用它自 身
– 例如求N!(n>=0)
long power(int n) { long f; if(n>1) f=power(n-1)*n; else f=1; return (f); }
函数
• 数组作为函数参数
• 数组的定义 • 数组元素的引用 • 数组的元素的初始化 • 应用举例
数组
• 数组的定义 – 数据类型 数组名[常量表达式] – int a[10];
– 下标从0开始 – 数组名代表整个数组的首地址
数组
• 一维数组元素的引用
– 数组名[下标表达式]
• 一维数组的元素的初始化
– 数据类型 数组名[常量表达式]={初值表}
– 使用指向数组的指针变量来引用数组元素
main()
{ int array[10], *pointer=array, i;
《数据结构(清华版)》1第一章 绪论PPT课件
指针
1345
元素1
1400
1346
元素4
∧
…….
……..
…….
1400
元素2
1536
…….
……..
…….
1536
元素3
1346
10
数据结构的三个方面: 数据的逻辑结构
线性结构
线性表 栈 队
ቤተ መጻሕፍቲ ባይዱ
非线性结构 树形结构 图形结构
数据的存储结构 顺序存储 链式存储
数据的运算:检索、排序、插入、删除、修改等
11
char name[20]; float score; }STUDENT; STUDENT stu1,stu2, *p;
12
写在最后
经常不断地学习,你就什么都知道。你知道得越多,你就越有力量 Study Constantly, And You Will Know Everything. The More
图状结构——多个对多个,如图
7
数据的逻辑结构—只抽象反映数据元素的逻辑关系
数据的存储(物理)结构—数据的逻辑结构在计算 机存储器中的实现
存储结构分为: 顺序存储结构——借助元素在存储器中的相对位置来表示
数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据
元素间的逻辑关系
数据的逻辑结构与存储结构密切相关
1
课程内容:
计算机软件的基础知识———数据结构与算法
课时安排:
数据结构——48学时 上机——16学时
教材:
数据结构 严蔚敏 清华 参考书:数据结构 刘自强 武汉理工大
2
第一章 绪言
❖ 1.1 什么是数据结构
程序=数据结构+算法
数据结构-清华大学严蔚敏PPT
③ 可行性: 一个算法是能行的。即算法描述的操作 都可以通过已经实现的基本运算执行有限次来实现。
④ 输入: 一个算法有零个或多个输入,这些输入 取自于某个特定的对象集合。
⑤ 输出: 一个算法有一个或多个输出,这些输出 是同输入有着某些特定关系的量。
一个算法可以用多种方法描述,主要有:使用自 然语言描述;使用形式语言描述;使用计算机程序设计 语言描述。
初始化赋值查找修改插入删除求长度等初始化赋值查找修改插入删除求长度等以下将对几种主要的操作进行讨论以下将对几种主要的操作进行讨论statusinitsqlistsqliststatusinitsqlistsqlistlelemarrayelemtypelelemarrayelemtypemallocmaxsizesizeofelemtypemallocmaxsizesizeofelemtypereturnerrorreturnerrorreturnokreturnok在线性表在线性表i1i1i1i1个位置上插入一个新结点个位置上插入一个新结点使其成使其成为线性表为线性表i1i1i1i1将线性表将线性表个结点后移一个位个结点后移一个位将结点将结点插入到结点插入到结点i1i1之后之后线性表长度加线性表长度加算法描述算法描述statusinsertsqlistsqliststatusinsertsqlistsqlistelemtypeelemtypei0illength1returnerrori0illength1returnerror线性表溢出线性表溢出returnerrorlelemarrayj1lelemarrayj
算法与数据结构
教材:《数据结构 (C 语言版 ) 》。严蔚敏,吴伟民
编
著。清华大学出版社。
参考文献:
1 《数据结构》 。张选平,雷咏梅 编, 严蔚敏 审。 机械工业出版社。
④ 输入: 一个算法有零个或多个输入,这些输入 取自于某个特定的对象集合。
⑤ 输出: 一个算法有一个或多个输出,这些输出 是同输入有着某些特定关系的量。
一个算法可以用多种方法描述,主要有:使用自 然语言描述;使用形式语言描述;使用计算机程序设计 语言描述。
初始化赋值查找修改插入删除求长度等初始化赋值查找修改插入删除求长度等以下将对几种主要的操作进行讨论以下将对几种主要的操作进行讨论statusinitsqlistsqliststatusinitsqlistsqlistlelemarrayelemtypelelemarrayelemtypemallocmaxsizesizeofelemtypemallocmaxsizesizeofelemtypereturnerrorreturnerrorreturnokreturnok在线性表在线性表i1i1i1i1个位置上插入一个新结点个位置上插入一个新结点使其成使其成为线性表为线性表i1i1i1i1将线性表将线性表个结点后移一个位个结点后移一个位将结点将结点插入到结点插入到结点i1i1之后之后线性表长度加线性表长度加算法描述算法描述statusinsertsqlistsqliststatusinsertsqlistsqlistelemtypeelemtypei0illength1returnerrori0illength1returnerror线性表溢出线性表溢出returnerrorlelemarrayj1lelemarrayj
算法与数据结构
教材:《数据结构 (C 语言版 ) 》。严蔚敏,吴伟民
编
著。清华大学出版社。
参考文献:
1 《数据结构》 。张选平,雷咏梅 编, 严蔚敏 审。 机械工业出版社。
数据结构(C语言版上)清华大学出版社ppt
以链式结构存储的线性表称之为以链式结构存储的线性表称之为linkedlistlinkedlist70存储地址数据域指针域15头指针h15null20141413132727线性表王李钱线性表王李钱表示意图表示意图71存放数据元素的结点至少包含两个域数据域和指针域数据域存放元素的数据指针域存放其后继元素的存储地址指针域中存放的信息称为指针或链n个结点连接成一个链表称为线性表的链式存储结构73typedeftypedefstructstructlnodelnodeelemtypeelemtypedatadata数据域数据域structstructlnodelnodenextnext
—— C语言版
清华大学出版社
2009年9月
第1章 概 论
o 什么是数据结构 o 为什么要学习数据结构 o 算法和算法分析
1.1 什么是数据结构
1.1.1 数据和数据元素
数据(data)是信息的载体,是对客观事物的符 号表示,它能够被计算机识别、存储和加工处理。
数据——在计算机科学中指所有能输入到计算机中并被计 算机程序处理的符号的总称。如图像、数、字符、声音、 视频等都可以通过编码而由计算机处理,因此它们也属于 数据的范畴。
一般,我们把算法运行的时间定义 成函数T(n),一个算法所耗费的时间 将随输入数据量n的增大而增大,n是 该算法输入数据的规模,这个数据规 模不是某一个具体的输入。T(n)的单 位是不确定的,一般把它看成是在一 个特定的计算机上执行的指令条数。
当讨论一个程序的运行时间 T(n)时, 注重的不是T(n)的具体值,而是它的增长 率。即求出T(n)随输入数据量n而增长的 趋势(极限) 。
通常有如下的函数关系排序: c< log2 n< n< n log2 n< n2< n3< 10 n
—— C语言版
清华大学出版社
2009年9月
第1章 概 论
o 什么是数据结构 o 为什么要学习数据结构 o 算法和算法分析
1.1 什么是数据结构
1.1.1 数据和数据元素
数据(data)是信息的载体,是对客观事物的符 号表示,它能够被计算机识别、存储和加工处理。
数据——在计算机科学中指所有能输入到计算机中并被计 算机程序处理的符号的总称。如图像、数、字符、声音、 视频等都可以通过编码而由计算机处理,因此它们也属于 数据的范畴。
一般,我们把算法运行的时间定义 成函数T(n),一个算法所耗费的时间 将随输入数据量n的增大而增大,n是 该算法输入数据的规模,这个数据规 模不是某一个具体的输入。T(n)的单 位是不确定的,一般把它看成是在一 个特定的计算机上执行的指令条数。
当讨论一个程序的运行时间 T(n)时, 注重的不是T(n)的具体值,而是它的增长 率。即求出T(n)随输入数据量n而增长的 趋势(极限) 。
通常有如下的函数关系排序: c< log2 n< n< n log2 n< n2< n3< 10 n
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实践性较强。
h
12
教材和教学参考书
主教材 ➢数据结构(用面向对象方法和C++描述), 第二版,殷人昆,邓俊辉等,清华大学出版社
辅助教材
➢J. R. Hubbard, Data Structures with C++, 机械工业出版社影印, 中译名《数据结构 习题 与解答 C++版》,¥40(七折¥ 28)
发展阶段: 数据结构的概念不断扩充,包括了网络、集 合代数论、关系等“离散数学结构”的内容。 70年代后期,我国高校陆续开设该课程。
h
4
数据结构课程的地位
是介于数学、计算机硬件和计算机软件三者 之间的一门核心课程数据结构课程的地位。
硬件
关系
操作
操作
h
5
数据结构是一门研究非数值计算的程序设计 问题中计算机的操作对象及其之间关系与操 作的学科。是介于数学、计算机硬件和计算 机软件三者之间的一门核心课程,属于计算 机学科中的一门综合性专业基础课程。
按时、独立、认真地完成每次作业; 完成作业方式:
1. 第5周、第9周、第13周和第17周提交作 业;
2. 作业分两部分: ① 第1部分是纸面作业,要求用笔写并不 得复印和打印
h
16
课程学习要求
② 第2部分是上机作业,要求用C++语言 编程实现,并通过网络学堂提交其源 程序及可执行文件;
成绩评定标准:
h
11
数据结构课程的特点
数据结构课程是计算机专业基础课,主要 训练学生在系统开发中的数据设计、算法 设计与分析及数据组织的能力,它是后续 多门课程,如数据库、操作系统、编译原 理、网络系统基础等的基础,对于从事计 算机系统开发的人员,是必修课程之一。
需要有关“程序设计语言”和“离散数学” 的知识作为课程的基础。
要写出好的查找算法,取决于这张表的结 构及存储方式。
电话号码表的结构和存储方式决定了查找 (算法)的效率。
h
10
求解非数值计算的问题的步骤:
主要考虑的是设计出合适的数据结构及相应 的算法。即首先要考虑对相关的各种信息如 何表示、组织和存储?
可以认为:数据结构是一门研究非数值计算 的程序设计问题中计算机的操作对象以及它 们之间的关系和操作的学科。
本着教学相长的精神,希望经常对教学效果作 出反馈,以便及时改进教学方法。
学好一门课程,教师的引导固然十分重要,但 主要靠学生的自身努力。课堂教学可以起到画 龙点睛的作用,但只有不断练习,才能巩固、 掌握课程的内容。因此,本课程要求同学积极 独立完成所布置的习题。
h
15
课程学习要求
自觉预习、遵守纪律、认真听课、及时复 习;
数值计算的关键是:如何得出数学模型 (方程)?
程序设计人员比较关注程序设计的技巧。 典型问题:
电路分析与模拟 大坝(应力与应变)结构分析 弹道仿真程序 等
h
9
非数值计算问题
数据元素之间的相互关系一般无法用数学 方程加以描述。
例如,电话号码查询问题 ① 按顺序存储方式:遍历表 ② 按姓氏索引方式:索引表
13910558186, wangxiaodong03@ 李智超,博士助教(负责4,5班及外系) 13811944829, lizhichaoxyz@
h
18
THU
Thanks for Coming! 谢谢
2006年2月20日
h
19
数据结构电子教案
1. 纸面作业,占10%; 2. 上机作业,占22%; 3. 平时 4 次随堂测验(随机进行)取 3 次
成绩好者,占18%; 4. 期末考试,占50%。
h
17
教师信息
殷人昆,主讲教师
62795589, yinrk@ 王 宏,主讲教师
62783860, wanghong@ 王晓东,博士助教(负责1,2,3班)
第一章 数据结构 概念
殷人昆 王 宏
h
20
第一章 数据结构概念
什么是数据结构 抽象数据类型及面向对象概念 算法定义 模板 算法简单性能分析与度量
h
21
学号 1 98131 2 98164 3 98165 4 98182 5 98224 6 98236 7 98297 8 98310 9 98318
清华大学计算机系
数据结构(用面向对象方法 与C++语言描述)第二版1
殷人昆
h
1
清华大学计算机系
数据结构
殷人昆 王 宏
h
2
学习数据结构的背景
计算机是一门研究用计算机进行信息表示 和处理的科学。
信息的表示和组织直接关系到信息处理程 序的效率。随着计算机的普及,信息范围 的拓宽,信息量的增加,使许多系统程序 和应用程序的规模和复杂性增加。
➢数据结构习题解析(用面向对象方法与C++语 言描述),殷人昆等,清华大学出版社。
h
13
集体购买, 出版社七折优 惠, 各班课代表统计需要
数目用Email告诉我
h
14
实验上机
在微机上使用Borland C++ 或 Visual C++ 都可 以。前者的系统体积小些。但同一个源程序在 这两个编译器上可能会出现不同的编译信息。
为了编写出一个“好”的程序,必须分析 待处理对象的特征及各对象间存在的关系, 这就是数据结构这门课所要研究的问题。
h
3
数据结构课程的形成和发展
形成阶段: 60年代初期,“数据结构”有关的内容散见 于操作系统、编译原理和表处理语言等课程。 1968年,“数据结构”被列入美国一些大学 计算机科学系的教学计划。
算法与数 据结构Ⅱ
计算机组 有穷自动机 织与结构
程序设计语言基础 操作系统
必修课课程设置与数据结构的关系
h
7
选修课课程设置与数据结构的关系
数据结构基础
计算机科学基础
算法与数 据结构Ⅱ
文件处理 (数据库)
算法设计与分析
软件工程
系统模拟
图形学
h
8
数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出程序→ 测试→最终解答。
它不仅是一般程序设计的基础,也是设计和 实现编译程序、操作系统、数据库系统及其 他系统程序和大型应用程序的重要基础。
该课程于1968年开始在国外作为一门独立课 程设立,由美国唐·欧·克努特教授开创其最 初体系。
h
6
程序设计与 问题解决
数据结构基础
计算机系统 原理与汇编
数学 1 数学 2
计算机科学基础
h
12
教材和教学参考书
主教材 ➢数据结构(用面向对象方法和C++描述), 第二版,殷人昆,邓俊辉等,清华大学出版社
辅助教材
➢J. R. Hubbard, Data Structures with C++, 机械工业出版社影印, 中译名《数据结构 习题 与解答 C++版》,¥40(七折¥ 28)
发展阶段: 数据结构的概念不断扩充,包括了网络、集 合代数论、关系等“离散数学结构”的内容。 70年代后期,我国高校陆续开设该课程。
h
4
数据结构课程的地位
是介于数学、计算机硬件和计算机软件三者 之间的一门核心课程数据结构课程的地位。
硬件
关系
操作
操作
h
5
数据结构是一门研究非数值计算的程序设计 问题中计算机的操作对象及其之间关系与操 作的学科。是介于数学、计算机硬件和计算 机软件三者之间的一门核心课程,属于计算 机学科中的一门综合性专业基础课程。
按时、独立、认真地完成每次作业; 完成作业方式:
1. 第5周、第9周、第13周和第17周提交作 业;
2. 作业分两部分: ① 第1部分是纸面作业,要求用笔写并不 得复印和打印
h
16
课程学习要求
② 第2部分是上机作业,要求用C++语言 编程实现,并通过网络学堂提交其源 程序及可执行文件;
成绩评定标准:
h
11
数据结构课程的特点
数据结构课程是计算机专业基础课,主要 训练学生在系统开发中的数据设计、算法 设计与分析及数据组织的能力,它是后续 多门课程,如数据库、操作系统、编译原 理、网络系统基础等的基础,对于从事计 算机系统开发的人员,是必修课程之一。
需要有关“程序设计语言”和“离散数学” 的知识作为课程的基础。
要写出好的查找算法,取决于这张表的结 构及存储方式。
电话号码表的结构和存储方式决定了查找 (算法)的效率。
h
10
求解非数值计算的问题的步骤:
主要考虑的是设计出合适的数据结构及相应 的算法。即首先要考虑对相关的各种信息如 何表示、组织和存储?
可以认为:数据结构是一门研究非数值计算 的程序设计问题中计算机的操作对象以及它 们之间的关系和操作的学科。
本着教学相长的精神,希望经常对教学效果作 出反馈,以便及时改进教学方法。
学好一门课程,教师的引导固然十分重要,但 主要靠学生的自身努力。课堂教学可以起到画 龙点睛的作用,但只有不断练习,才能巩固、 掌握课程的内容。因此,本课程要求同学积极 独立完成所布置的习题。
h
15
课程学习要求
自觉预习、遵守纪律、认真听课、及时复 习;
数值计算的关键是:如何得出数学模型 (方程)?
程序设计人员比较关注程序设计的技巧。 典型问题:
电路分析与模拟 大坝(应力与应变)结构分析 弹道仿真程序 等
h
9
非数值计算问题
数据元素之间的相互关系一般无法用数学 方程加以描述。
例如,电话号码查询问题 ① 按顺序存储方式:遍历表 ② 按姓氏索引方式:索引表
13910558186, wangxiaodong03@ 李智超,博士助教(负责4,5班及外系) 13811944829, lizhichaoxyz@
h
18
THU
Thanks for Coming! 谢谢
2006年2月20日
h
19
数据结构电子教案
1. 纸面作业,占10%; 2. 上机作业,占22%; 3. 平时 4 次随堂测验(随机进行)取 3 次
成绩好者,占18%; 4. 期末考试,占50%。
h
17
教师信息
殷人昆,主讲教师
62795589, yinrk@ 王 宏,主讲教师
62783860, wanghong@ 王晓东,博士助教(负责1,2,3班)
第一章 数据结构 概念
殷人昆 王 宏
h
20
第一章 数据结构概念
什么是数据结构 抽象数据类型及面向对象概念 算法定义 模板 算法简单性能分析与度量
h
21
学号 1 98131 2 98164 3 98165 4 98182 5 98224 6 98236 7 98297 8 98310 9 98318
清华大学计算机系
数据结构(用面向对象方法 与C++语言描述)第二版1
殷人昆
h
1
清华大学计算机系
数据结构
殷人昆 王 宏
h
2
学习数据结构的背景
计算机是一门研究用计算机进行信息表示 和处理的科学。
信息的表示和组织直接关系到信息处理程 序的效率。随着计算机的普及,信息范围 的拓宽,信息量的增加,使许多系统程序 和应用程序的规模和复杂性增加。
➢数据结构习题解析(用面向对象方法与C++语 言描述),殷人昆等,清华大学出版社。
h
13
集体购买, 出版社七折优 惠, 各班课代表统计需要
数目用Email告诉我
h
14
实验上机
在微机上使用Borland C++ 或 Visual C++ 都可 以。前者的系统体积小些。但同一个源程序在 这两个编译器上可能会出现不同的编译信息。
为了编写出一个“好”的程序,必须分析 待处理对象的特征及各对象间存在的关系, 这就是数据结构这门课所要研究的问题。
h
3
数据结构课程的形成和发展
形成阶段: 60年代初期,“数据结构”有关的内容散见 于操作系统、编译原理和表处理语言等课程。 1968年,“数据结构”被列入美国一些大学 计算机科学系的教学计划。
算法与数 据结构Ⅱ
计算机组 有穷自动机 织与结构
程序设计语言基础 操作系统
必修课课程设置与数据结构的关系
h
7
选修课课程设置与数据结构的关系
数据结构基础
计算机科学基础
算法与数 据结构Ⅱ
文件处理 (数据库)
算法设计与分析
软件工程
系统模拟
图形学
h
8
数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出程序→ 测试→最终解答。
它不仅是一般程序设计的基础,也是设计和 实现编译程序、操作系统、数据库系统及其 他系统程序和大型应用程序的重要基础。
该课程于1968年开始在国外作为一门独立课 程设立,由美国唐·欧·克努特教授开创其最 初体系。
h
6
程序设计与 问题解决
数据结构基础
计算机系统 原理与汇编
数学 1 数学 2
计算机科学基础