数据结构-合肥工业大学 1(合肥工大)_第1页
数据结构-合肥工业大学 1(合肥工大)_第2页
数据结构-合肥工业大学 1(合肥工大)_第3页
数据结构-合肥工业大学 1(合肥工大)_第4页
数据结构-合肥工业大学 1(合肥工大)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

祝同学们新学期愉快

学习进步!祝同学们

新学期愉快

学习进步!华电计算机系数据结构(DataStructure)教材名称:

《数据结构》王翠茹编著中国电力出版社任课教师:刘军工作单位:计算机系华电教材科有售华电计算机系开设本课程的必要性以及课程的特点:1.计算机学科综合性的专业基础课之一.2.需要有关“程序设计语言”和“离散数学”的知识作为课程的基础.3.实践性较强.华电计算机系第一章绪论华电计算机系1.1课程简介1.2基本概念1.3算法及算法评价1.4算法语言的说明华电计算机系

1.1课程简介算法+数据结构=程序(Algorithm+Datastructure=Program)程序设计:为计算机处理问题编写的一组指令。算法:处理问题的策略。数据结构:问题的数学模型。程序设计的实质是数据的表示和数据处理,为此应提出问题的数学模型和设计相应的算法。华电计算机系例如1.铺设煤气管道问题

ABCDIHGEF32.844.612.18.756.421.341.167.310.585.698.752.579.2(a)居民区示意图ABCDIHGEF32.812.18.721.341.110.579.2(b)铺设煤气管道设计图华电计算机系例如2.图书馆的书目检索问题登录号书名作者分类号………………172832离散数学樊映川S01…172833理论力学罗远祥S01…172834高等数学华罗庚S01…172835线性代数滦汝书S02………………书名登录号……高等数学172832、172834…理论力学172833…线性代数172835………作者登录号……樊映川172832…华罗庚172834…滦汝书172835………类别登录号……L172833…S172832、172834………华电计算机系

1.2基本概念数据数据是描述客观事物的数、字符以及所有能输入到计算机中并为计算机程序处理的对象的集合。

数据元素数据的基本单位,有时一个数据元素也可以由若干个数据项组成。数据项数据处理的最小单位。980604刘晔女188010学号姓名性别年月日组合项原子项出生日期(学生情况)华电计算机系

1.2基本概念数据对象性质相同的数据元素的集合。

数据的逻辑结构对数据元素之间逻辑关系的描述。它可以用一个数据元素的集合和定义在这个集合上的若干关系来表示。DataStructure=(D,S)D:数据元素的集合;S:D上关系的集合1)集合:集合中任何两个结点之间都没有逻辑关系,组织形式松散。华电计算机系2)线性结构:元素之间存在着一对一的关系。依次排列形成一条“锁链”。3)树形结构:数据元素之间存在着一对多的关系,具有分支、层次特性。4)图状结构:数据元素之间存在多对多的关系,元素之间互相缠绕,具有网络特性。华电计算机系

1.2基本概念

数据的存储结构逻辑结构及数据元素在计算机中的表示.1)顺序存储方式(向量存储)2)链式存储方式3)索引存储方式4)散列存储方式

数据类型是程序设计语言中允许的变量种类,一个值的集合和定义在这个值上的一组操作。分为两类:1)原子类型2)结构类型华电计算机系

1.2基本概念

抽象数据类型一个数学模型和定义在这个数学模型的一组操作。特性数据抽象:用ADT描述程序处理的实体时,强调的是其本质的特征,其完成的功能以及和外部的接口。数据封装:将实体的外部特性和其内部实现分离,并对外部用户隐藏其内部实现细节。ADT抽象数据类型名{数据对象:<数据对象的定义>数据关系:<数据关系的定义>基本操作:<基本操作的定义>}ADT抽象数据类型名华电计算机系

例如:ADTComplex{

数据对象:D={e1,e2|e1,e2∈Realset}

数据关系:R1={<e1,e2>|e1是复数的实数部分、e2

是复数的虚数部分}

基本操作:InitComplex(v1,v2);初始化:v1,v2的值赋值

DestroyComplex(Z);销毁复数Z

GetReal(Z,realPart);得到Z的实部

GetImag(Z,ImagPart);得到Z的虚部Add(Z1,Z2,Sum);复数Z1、Z2相加Subtract(Z1,Z2,Difference);复数Z1、Z2相减Multiply(Z1,Z2,Product);复数Z1、Z2相乘}ADTComplex华电计算机系

1.2基本概念

数据结构数据结构就是要研究数据之间的结构关系。具体来说,它包括数据的逻辑结构和物理结构,以及在这些结构上定义的相应的运算。按照某种逻辑结构组织的一组数据,按一定的存储方式将它们映射到计算机的存储器中,并且在这些数据上定义了一个运算的集合,运算的结果保持原来的结构。

结构结构是指同一数据对象中各数据元素之间存在的关系。华电计算机系

1.

研究数据元素之间的客观联系。

2.

研究具有某种逻辑关系的数据在计算机存储器内的存储方式。3.研究如何在数据的各种结构(逻辑的和物理的)的基础上对数据实施一系列有效的基本操作。

逻辑结构存储结构数据结构课程研究的主要内容算法华电计算机系数据结构举例例1:一系列整数,我们可以用算术运算“+、-、*、/”等进行运算,此时数据对象是整数集合,那么,数据对象整数再加上“+、-、*、/”等符号的运算就构成了一个数据结构的定义。例2:建立一个大学教师档案,逻辑结构如下图,数据对象为教师情况的集合,构成了一种数结构,这种数结构就是其逻辑关系,教师档案这个数据对象再加上查找,删除,插入等操作就构成了一个数据结构的定义。华电计算机系计算机教研室发电教研室华电电力系动力系计算机系…软件教研室…教师A…………华电计算机系数据结构课程研究的主要内容三个层次:抽象实现评价主要内容可以归纳为三个层次五个要素:五个要素:逻辑结构存储结构不同结构的

基本运算算法比较及分析华电计算机系

1.3算法及算法评价

算法概念解决问题的方法和步骤,指为解决一个或一类问题给出的一个确定的、有限长的操作序列。

算法特性1、有穷性2、确定性3、可行性4、有输入5、有输出华电计算机系

1.3算法及算法评价

算法分类1、程序设计语言描述的算法2、伪语言算法3、非形式算法(自然语言算法)

算法评价1、算法的正确性

2、算法是否易读、易写、易改

3、算法执行速度

4、算法所占空间

华电计算机系假如随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则记作T(n)=O(f(n)),称T(n)为算法的时间复杂性时间复杂度频度统计法以语句执行的次数的多少作为算法的时间量度的分析方法称为频度统计法。

一条语句的频度是指该语句被执行的次数,而整个算法的频度是指算法中所有语句的频度之和。华电计算机系例如:1)x=x+1:2)For(i=1;i<=n;i++)x=x+1;

3)For(i=1;i<=n;i++)For(j=1;j<=n;j++)x=x+1;机器只执行一次,则它的频度为一次,即f(n)=1执行时间复杂度为O(1)。其语句执行n次,频度为n次,执行时间与n成正比,f(n)=n,复杂度为O(n)。其语句执行n²次,频度为n²次,执行时间与n²成正比,f(n

)=n²

,复杂度为O(n²)。华电计算机系算法的频度:

f(n)

=n+1+n(n+1)+n2+n2(n+1)+n3=2n3+3n2+2n+1

4)voidMATRIX(A,B,C,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]=C[i][j]+A[i][k]

B[k][j];}}}

--------------------------

n+1

-------------------

n(n+1)

----------------------------------

n2-----------

n2(n+1)

----

n3华电计算机系

当n→∞时,有f(n)/g(n)=常数≠0,则称函数f(n)与g(n)同阶,或者说,f(n)与g(n)同一个数量级,记作

f(n)=O(g(n))

称上式为算法的时间复杂度,或称该算法的时间复杂度为O(g(n))

。其中,

n为问题的规模(大小)的量度。算法的时间复杂度为O(n3)lim(f(n)/g(n))=lim((2n3+3n2+2n+1)/n3)

=2n→∞n→∞关于符号O的的数学定义华电计算机系假如随着问题规模n的增长,算法执行所需存储量的增长率和g(n)的增长率相同,则记作S(n)=O(g(n)),称S(n)为算法的空间复杂性。空间复杂度算法的存储空间1.输入数据所占的空间2.程序本身所占的空间3.辅助变量所占的空间华电计算机系1.4、算法语言的说明1.采用自然语言来描述

(1)M除以N,将余数送中间变量R;(2)测试余数R是否等于零?

a)若R等于零,求得的最大公因子为当前N

的值,算法到此结束。

b)若R不等于零,将N送入M,将R送N,重复算法的(1)和(2)。问题:求两个正整数M与N的最大公因子。华电计算机系2.采用程序流程图的形式来描述开始M除以N的余数送R余数R为0否?输出N的值结束将N送M将R送Nnoyes华电计算机系3.采用某种具体程序语言来描述COMFACTOR(M,N)

intM,N;{

intR;while(1){R=M%N;if(R==0)returnN;M=N;N=R;

}}

用C语言描述的求两个正整数最大公因子的算法(C函数)华电计算机系类C语言4.设计一种既脱离某种具体的程序设计语言,又具有各种程序设计语言的共同特点的形式化语言来描述华电计算机系类C语言简介一、算法的格式Pascal语言PROGRAM程序名(input,output);说明部分;BEGIN语句串;END.C语言函数名(参数表)参数说明;{说明部分;语句串;}procedure过程名(参数表)说明部分;begin语句串;End;华电计算机系北航计算机系类C语言的特点1、算法中使用的辅助变量可以不做变量说明(函数类型及函数参数需要说明类型),重要的变量须在注解中说明其类型和作用。2、基本操作的算法都用以下形式的函数描述。

函数类型

函数名(函数参数表)

{//算法说明

语句序列;

}//函数名华电计算机系北航计算机系类C语言的特点3、在函数中除了值调用方式之外,(类似于pascal中的形参调用),增添了C++语言的引用调用的参数传递方式。在形参表中,以&打头的参数即为引用参数,引用参数能被函数本身更新值,可以作为输出数据的管道。华电计算机系4、内存的动态分配与释放

使用new和delete动态分配和释放内存空间。分配空间指针变量=new数据类型;释放空间delete指针变量;5.循环语句(三种)while语句

while循环条件

语句;

do-while语句do{

语句序列}while循环条件

for语句

for(赋值表达式序列;条件;修改表达式序列)语句;

华电计算机系

函数结束语句

return表达式;

return;case结束语句break;异常结束语句exit(异常代码);开关语句1switch(表达式){case值1:语句序列1;break;

case值2:语句序列2;break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论