数据结构(牛小飞)第1章引论

上传人:枫** 文档编号:588592752 上传时间:2024-09-08 格式:PPT 页数:54 大小:831KB
返回 下载 相关 举报
数据结构(牛小飞)第1章引论_第1页
第1页 / 共54页
数据结构(牛小飞)第1章引论_第2页
第2页 / 共54页
数据结构(牛小飞)第1章引论_第3页
第3页 / 共54页
数据结构(牛小飞)第1章引论_第4页
第4页 / 共54页
数据结构(牛小飞)第1章引论_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《数据结构(牛小飞)第1章引论》由会员分享,可在线阅读,更多相关《数据结构(牛小飞)第1章引论(54页珍藏版)》请在金锄头文库上搜索。

1、 主讲人:牛小飞E_mail: niujiaoxue163. comPassword: niujiaoxue123E_mail: Tel: 13964176813理论教学:理论教学:48学时学时实践教学:上机实践教学:上机8学时学时 2周集中课程设计周集中课程设计数据结构、算法与应用数据结构、算法与应用:Java语言描述语言描述Sartaj Sanhi 著著 汪诗林等译汪诗林等译 机械工业出版社机械工业出版社 数据结构数据结构 Java语言描述语言描述Sichael Main著著 机械工业出版社机械工业出版社 课程信息课程信息数据结构数据结构( Java版版)(第第2版版) 叶核亚编著叶核亚编

2、著 电子工业出版社电子工业出版社 数据结构数据结构-Java语言描述语言描述 朱战立编著朱战立编著 清华大学出版社清华大学出版社 要求要求不迟到、不旷课,良好的课堂纪律不迟到、不旷课,良好的课堂纪律作业按时交、字迹工整作业按时交、字迹工整实验认真准备实验认真准备课前预习、课后复习课前预习、课后复习数据结构相关概念数据结构相关概念引论引论小结和作业小结和作业本课程学习内容本课程学习内容用用JavaJava语言描述数据结构语言描述数据结构递归简论递归简论相关概念数据(Data)2、形式3、含义数字、字符、图形、图像、音频、视频3089.2数据类型:int double char张三1、定义数据是描

3、述客观事物的数字、字符以及所有能输入到计算机中并能被计算机接受的各种符号集合的统称。数据类型数据类型数据类型是指一个值的集合和定义在这个值集上的操作的集合。高级程序设计语言通常预定义一些基本数据类型和构造数据类型。Java语言的基本数据类型有整数类型、浮点数类型、字符类型、布尔类型。构造类型(引用类型)有数组、类和接口。数据数据数据元素是数据的基本单位基本单位。一个数据元素可以是一个不可分割的原子项,也可以由多个数据项组成。 数据项是数据元素中有独立含义的、不可分割的最小标识单位最小标识单位。一个整数、一个字符都是原子项;一个学生数据元素由学号、姓名、性别和出生日期等数据项组成。结构(Stru

4、cture)结构:关系(Relation)数据结构Data_Structure=(D, S)D: a1, a2, a3, , anS: , , D:1, 7, 8, 9D:“ABC”, “City”D:“张明”,“男”,19, “计算机”, “王明辉”,“男”,20,“法律”,从关系或结构分,数据结构可归结为以下四类:集合结构 线性结构树形结构 图状结构逻辑结构Da1, a2, , anS 集合Da1, a2, , anS |ai-1 ,ai D, i=2,.,n 线性Da1, a2, ,anS |i j 对每个j,存在唯一的i有 树形Da1, a2, ,anS |ai D, aj D 图状例

5、1有数据结构:D=1, 2, 3, 4, 5 S=, , , 什么数据结构?逻辑结构例1D=1, 2, 3, 4, 5 S=, , , 12345逻辑结构例2有数据结构:D=1, 2, 3, 4, 5, 6, 7 S=, , , , , 什么数据结构?逻辑结构例2D=1, 2, 3, 4, 5, 6, 7 S=, , , , , 1234675逻辑结构例3有数据结构:D=1, 2, 3, 4, 5, 6, 7,8 S=row, colrow=, , , , , col=, , , 什么数据结构?逻辑结构例31234675D=1, 2, 3, 4, 5, 6, 7,8 row=, , , , ,

6、 col=, , , 8逻辑结构物理结构数据在内存中如何表示?数据之间的关系在内存中如何表示?表示x, y的方法两种存储结构顺序映像-顺序存储结构 链式映像-链式存储结构存储器模型1、电子元器件构成存储单元2、地址寄存器4、地址总线6、数据寄存器物理模型逻辑模型5、数据总线3、地址译码器0123n存储器模型存储器模型假设有假设有5位同学的成绩表:位同学的成绩表:2006001 992006002 802006003 852006004 602006005 70顺序存储结构顺序存储结构元素元素n n.元素元素i i.元素元素2 2元素元素1 1LoLo+mLo+(i-1)*mLo+(n-1)*m

7、存储地址存储地址存储内容存储内容2006001 992006002 802006003 852006004 602006005 70链式存储结构链式存储结构存储内容存储内容L0元素元素n n.元素元素2 2.元素元素3 3元素元素1 12006001 992006002 802006003 852006004 602006005 70P数据结构物理结构逻辑结构集合线性树形图状顺序存储结构链式存储结构数据操作数据操作数据操作是指对一种数据结构中的数据元素进行数据操作是指对一种数据结构中的数据元素进行各种运算和处理。每种数据结构都有一组数据操各种运算和处理。每种数据结构都有一组数据操作。基本操作有

8、:作。基本操作有:初始化初始化判断是否空状态判断是否空状态求长度:统计元素个数求长度:统计元素个数包含:判断是否包含指定元素包含:判断是否包含指定元素遍历:按某种次序访问所有元素,每个元素只被访问一次。遍历:按某种次序访问所有元素,每个元素只被访问一次。取值:获取指定元素值。取值:获取指定元素值。置值:设置指定元素值。置值:设置指定元素值。插入、删除等。插入、删除等。学习内容学习内容1、如何使用存储结构实现逻辑结构、如何使用存储结构实现逻辑结构2、如何实现逻辑结构的常用操作、如何实现逻辑结构的常用操作3、如何评价?、如何评价?学习内容学习内容主要学习以下四种数据结构的实现方法:主要学习以下四种

9、数据结构的实现方法:1.线性表线性表 2.栈和队列栈和队列 3.树树 4.图图散列及排序问题的算法设计散列及排序问题的算法设计 通过学习,可以深刻理解数据结构的作用,通过学习,可以深刻理解数据结构的作用,基本具备针对具体问题设计选择数据结构的能基本具备针对具体问题设计选择数据结构的能力。力。n引论: 数据、数据元素、数据结构、数据类型的概念;递归程序;Java描述数据结构n算法分析:时间复杂度和空间复杂度n线性表:线性表的逻辑结构定义、基本操作和在两种存储结构中基本操作的实现;线性表的应用。n栈和队列:栈和队列的结构特性、基本操作及在两种存储结构上基本操作的实现;栈和队列的应用。学习内容学习内

10、容n树和二叉树:树的基本概念;二叉树的定义、性质、存储表示;二叉树的遍历;森林和二叉树的相互转换;树的应用;哈夫曼树及哈夫曼编码。n散列:哈希表;n图:图的基本概念、存储表示(邻接矩阵、邻接表、十字链表,邻接多重表);图的遍历、图的连通性问题;拓扑排序、关键路径;最短路径。学习内容学习内容学习内容学习内容n排序:介绍插入排序、快速排序(交换排序)、选择排序、归并排序;排序的基本思想和算法分析。递归简论递归简论(教材教材1.3)大部分数学函数由简单公式描述:大部分数学函数由简单公式描述: C=5(F-32)/9 将华氏温度转换成摄氏温度。将华氏温度转换成摄氏温度。f(x)=0 if x=0f(x

11、)=2f(x-1)+x2 if x0 当一个函数用它自己来定义时就称为是递归的。当一个函数用它自己来定义时就称为是递归的。public int f(int x) if(x=0) return 0; else return 2*f(x-1)+x*x;/基准情况基准情况/递归调用递归调用递归函数递归函数举例1f(x)=0 if x=0f(x)=2f(x-1)+x2 if x0 阶乘 n!,n=0,1,2,3Basis: 0!=1Induction: n!=n(n -1)! 4!= 43!3!= 32!2!= 21!1!= 10!0! = 1public int factorial(int n) i

12、f( n = = 0) return 1; return n * factorial(n-1);递归函数递归函数举例2递归函数递归函数xn,n=0,1,2,3Basis: x0 = 1Induction: xn = xn-1x x4= x3xx3=x2xx2= x1xx1=x0xx0=1int power(float x, int n) if( n = = 0 ) return 1; return (power(x, n-1)*x);举例3Fibonacci数列 0 若n=0Fib(n) = 1 若n=1 Fib(n - 1) + Fib(n - 2)0, 1, 1, 2, 3, 5递归函数递

13、归函数举例4Ackerman函数 n + 1 若m=0Ack(m, n)= Ack(m - 1,1) 若n=0 Ack(m - 1, Ack(m, n - 1) 其它递归函数递归函数举例5一个规模为n的问题可以分解为若干个规模小于n的相同问题递归体现为一个函数调用自身,即函数的递归调用函数的递归调用可以用栈来实现递归简论递归简论用用Java语言描述数据结构语言描述数据结构public class 线性表线性表/树树/图图 boolean isEmpty( );int length( );boolean contain(Object obj);boolean add(ElementType el

14、ement);boolean remove(Object obj);public int theSize, count;用用Java语言描述数据结构语言描述数据结构泛型特性构件泛型特性构件(教材教材1.4) 利用利用java实现泛型特性实现泛型特性(教材教材1.5) Java泛型泛型n面向对象的一个重要特点是对代码重用的支持。n支持这个目标的一个重要机制就是泛型机制(generic mechanism):如果除去对象的基本类型外,实现方法是相同的,就可以用泛型实现(generic implementation)来描述这种基本功能。Java泛型泛型void swap(int a, int i,

15、int j) int temp=ai; ai=aj; aj=temp;void swap(AnyType a, int i, int j) AnyType temp=ai; ai=aj; aj=temp;Java泛型泛型举例1Java泛型泛型public AnyType extends Comparable void BubbleSort(AnyType a) for(int i=a.length-1;i0;i-)for(int j=0;j0) SwapReferences(a,j,j+1);public void BubbleSort(int a) for(int i=a.length-1;

16、i0;i-)for(int j=0;jaj+1)0)SwapReferences(a,j,j+1);带有限制的通配符举例2Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。 泛型类与一般的Java类基本相同,只是在类和接口定义上多出来了用声明的类型参数。Java泛型泛型(1)简单的泛型类)简单的泛型类public class GenericMemoryCell public AnyType read( ) return storedValue; public void

17、write(AnyType x) storedValue=x; private AnyType storedValue; 当指定一个泛型类时,类的声明则包含一个或多个类型参数,这些参数被放到类名后面的一对尖括号内。举例3public class myClassAnyType extends Comparable带有限制的通配符带有限制的通配符(2)使用)使用object表示泛型表示泛型n泛型MemoryCell类public class MemoryCell public Object read( ) return storedValue; public void write(Object x

18、) storedValue=x; private Object storedValue;Java中的基本思想就是可以通过使用像Object这样适当的超类来实现泛型类。举例4(2)使用)使用object表示泛型表示泛型n测试MemoryCell类public class TestMemoryCell public static void main(String args) MemoryCell m=new MemoryCell();m.write(“37”);String val=(String)m.read();System.out.println(val); 不能使用基本类型不能使用基本类型

19、(2)使用)使用object表示泛型表示泛型n泛型泛型MemoryCell类类public class MemoryCell public Object read( ) return storedValue; public void write(Object x) storedValue=x; private Object storedValue;只有引用类型能与Object相容。引用类型:数组、接口、类(3)基本类型的包装)基本类型的包装nint类型的包装是Integernbyte,short,long,float,double,boolean类型的包装为第一个字符大写,其余不变。nchar

20、类型的包装是Character8中基本类型不能与Object相容。所以,java为这8种基本类型提供了包装类。n每种类型的包装类是不可变的。每种类型的包装类是不可变的。n基本类型不能用做类型参数。基本类型不能用做类型参数。 GenericMemoryCell是非法的,必须使用包装类。(3)基本类型的包装)基本类型的包装public class TestMemoryCell public static void main(String args) MemoryCell m=new MemoryCell();m.write(new Integer(37);Integer wrapperVal=(I

21、nteger)m.read( );int val=wrapperVal.intValue( );System.out.println(val); 举例5小结和作业小结和作业物理结构物理结构逻辑结构逻辑结构集合集合线性表线性表树树图图顺序结构顺序结构链式结构链式结构数据结构数据结构递归递归用用JavaJava语言描述数据结构语言描述数据结构泛型泛型作业作业P P1919:1.1,1.5, 1.15要求:1、独立完成作业2、字迹工整,美观3、按时交作业4、做错了的题下次要改正小结和作业小结和作业练习练习2、数据的( )包括集合、线性、树和图结构四种类型。A.存储结构 B.逻辑结构 C.物理结构 D.基本运算1、数据结构有( )结构和( )结构两种,通常是指( )结构

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号