数据结构C语言版严蔚敏绪论.ppt
《数据结构C语言版严蔚敏绪论.ppt》由会员分享,可在线阅读,更多相关《数据结构C语言版严蔚敏绪论.ppt(151页珍藏版)》请在三一办公上搜索。
1、数据结构,(C语言版),讲授:刘彩霞,Email:amy_,祝同学们新学期愉快、学习进步!,数据结构课程所处的地位:,介于数学、计算机硬件和计算机软件三者之间的一门核心课程。,数据结构是计算机专业的一门综合性专业基础课是计算机专业本/专科生必修学位课程 是计算机研究生/升本入学考试必考科目 是软件人员水平考试内容是数学建模、ACM程序竞赛基础,学业基础,先修课程:高级语言程序设计(如 C/C+语言)后续课程:操作系统(例:打印机 队列管理)、数据库原 理、人工智能等。,课程安排,总学时:90(18周*5)讲课学时:72 实验学时:18,教学参考书 教 材:数据结构C语言版严蔚敏、吴伟民-清华大
2、学出版社数据结构C语言篇习题与解析 李春葆-清华大学出版社数据结构自学考试指导丁宝康等 清华大学出版社算法与数据结构,范策等,机械工业出版社,http:/210.44.232.53/ec/C70/Index.htm(我院精品课程)http:/一个很不错的站点,有丰富的编程题库和竞赛试题,也有很多有参考价值的文献。)http:/(烟台大学)http:/,助学网站,助学网站,http:/www.cs.sunysb.edu/algorith/(The Algorithm Design Manual 的作者Steven S.Skiena的主页,详细介绍算法和数据结构,十分专业!)http:/www.n
3、ist.gov/dads/(此网站是一本关于算法、数据结构、以及相关问题的电子字典,对各种算法有精确的定义和实现方法。)http:/www.acsl.org/(美国计算机科学协会)http:/(易自考)http:/(C语言编程宝典)http:/(C语言学习)http:/数据结构+精品课程,实 验,实验环境:Win-tc 或Turbo c 或VC+实验项目名称:一元稀疏多项式的加减运算栈和队列的抽象数据类型实现 二叉树的建立、遍历及典型算法实现 图的建立、遍历及典型算法实现典型查找算法实现内部排序算法实现,课程设计,题目(任选一):迷宫问题求解 算术表达式求值 校园导游系统图书管理信息系统的设计
4、与实现 查找算法综合比较排序算法综合比较要求达到的目标:文档清晰、完整,学会分析解决问题 程序运行良好,本课程学习要求,自觉预习、遵守纪律、认真听课、及时复习;按时、独立、认真地完成每次作业;每一章有作业题,按时交。每次实验前做好准备工作,写好程序,实验后交实验报告(写在纸上)。期中布置课程设计3.积极回答课堂提问;成绩评定标准:平时表现:占30%,包括作业、课程设计、提问、学习纪律 期末考试:闭卷笔试,占70%,目 录Contents,第一章 绪 论(4学时),第二章 线性表(8学时),第三章 栈和队列(8学时),第四章 串、数组和广义表(6学时),第五章 树和二叉树(10学时),第六章 图
5、(6学时),第七章 查找(6学时),第八章 排序(6学时),数据结构课程的内容,逻辑结构唯一存储结构不唯一运算的实现依赖于存储结构,1.1 什么是数据结构1.2 基本概念和术语1.3 抽象数据类型1.4 算法及算法分析(算法评价),第一章 绪 论,计算机发展简史,众所周知,二十世纪四十年代,电子数字计算机问世的直接原因是解决弹道学的计算问题。早期,电子计算机的应用范围,几乎只局限于科学和工程的计算,其处理的对象是纯数值性的信息,通常,人们把这类问题称为数值计算。,近三十年来,电子计算机的发展异常迅猛表现在计算机本身运算速度不断提高、信息存储量日益扩大、价格逐步下降更重要的是计算机广泛地应用于情
6、报检索、企业管理、系统工程等方面,已远远超出了科技计算的范围,而渗透到人类社会活动的一切领域,计算机发展简史,与此相应,计算机的处理对象也从简单的纯数值性信息发展到非数值性的和具有一定结构的信息,计算机发展简史,“数据结构”作为一门独立的课程在国外是从1968年才开始设立的。1968年美国唐欧克努特教授开创了数据结构的最初体系,他所著的计算机程序设计技巧第一卷基本算法是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。“数据结构”被列入美国一些大学计算机科学系的教学计划。,数据结构,D.Knuth 的巨著计算机程序设计艺术第一卷“基本算法”第二卷“半数字算法”第三卷“排序与搜索”197
7、4年获得图灵奖,是40届中唯一因一部影响巨大的书而获奖,数据结构,发展阶段:数据结构的概念不断扩充,包括了网络、集合代数论、关系等“离散数学结构”的内容。70年代后期,我国高校陆续开设该课程。,数据结构,数据结构是研究什么的?这是课程最基本的问题,关系到我们为什么要学习数据结构这门课程,1.1 什么是数据结构,从应用问题涉及的对象来分可分为数值问题 非数值问题数值问题就是我们平时所说的计算问题,如已知圆的半径,要求圆的面积非数值问题就是问题中涉及的模型不能用数学方程来表达的那些问题,1.1 什么是数据结构,例 1(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台
8、时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?,数值问题与非数值问题有什么不同,1)数值问题,解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:,1)数值问题例2 已知:游泳池的长length和宽wide,求面积area。分析:,1.1 什么是数据结构,(1)问题涉及的对象:length,wide,area 是实数 可用数值表示;(2)对
9、象之间的关系:area=lengthwide 可用方程或 函数表示;(3)数据存储:可用程序设计语言中的实型变量存储;(4)问题求解:用某种计算方法求解;,程序:main()int len,wide,area;scanf(“%d%d%n”,可见,对于数值问题,对象之间的关系通常可以用方程或函数表达,只要能列出表达对象之间关系的方程或函数,找到求解方程或函数的方法,就可以编写程序了。,求一组(n个)整数中的最大值。算法:基本操作是两两比较,求两个数的大小模型:?,1.1 什么是数据结构,1.1 什么是数据结构,2)非数值问题应用举例1 电话号码查询系统应用举例2 学籍档案管理应用举例3 全排列问
10、题应用举例4 制定教学计划,数值问题与非数值问题有什么不同,举例1-电话号码查询系统,设有一个电话号码薄,它记录了N个人的名字和其相应的电话号码,假定按如下形式(a1,b1)(a2,b2)(an,bn)其中ai,bi(i=1,2n)分别表示某人的名字和对应的电话号码 要求设计一个算法,当给定任何一个人的名字时,该算法能够打印出此人的电话号码;如果该电话簿中根本就没有这个人,则该算法也能够报告没有这个人的反馈信息,举例2-学籍档案管理,假设一个学籍档案管理系统包含如下表1-1所示的学生信息,表1-1,特点?,特点:,每个学生的信息占据一行,所有学生的信息按学号顺序依次排列构成一张表格表中每个学生
11、的信息依据学号的大小存在着一种前后关系,这就是线性结构对它的操作通常是插入某个学生的信息,删除某个学生的信息,更新某个学生的信息,按条件检索某个学生的信息等等,132 213 231 321 312 1234 1243 1324 1342 1423 1432 等,举例3输出n个对象的全排列,解决,图 1-1 3个对象的全排列过程,(a1)(a2)(a3)(a4)(a5),(a),计算机和人对奕问题,l在求解过程中,所处理的数据之间具有层次关系,这是树形结构l对它的操作有:建立树形结构,输出最低层结点内容等等,在制定教学计划时,需要考虑各门课程的开设顺序。有些课程需要先导课程,有些课程则不需要,
12、而有些课程又是其他课程的先导课程。比如,计算机专业课程的开设情况如下表1-2所示:,举例4制定教学计划,表1-2,课程先后关系的图形描述形式,图 1-2 计算机专业必修课程开设先后关系,1)问题涉及的对象:课程可用课程名表示 不能用数值表示2)对象之间的关系:需要考虑各门课程的开设顺序。有些课程是某些课程的 先导课程。必须先开先导课程,再开后续课程。课程之间的这种关系不能用方程或 函数表示3)数据及数据之间的关系如何存储?4)如何求解?,特点,课程之间的先后关系用图结构描述通过实施创建图结构,按要求将图结构中的顶点进行线性排序,从应用问题涉及的对象来分可分为数值问题 非数值问题数值问题就是我们
13、平时所说的计算问题,如已知圆的半径,要求圆的面积非数值问题就是问题中涉及的模型不能用数学方程来表达的那些问题,小结:,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象及其之间关系与操作的学科。,1.1 什么是数据结构,需求分析 总体设计 模块分割 建立数学模型 设计解数学模型的算法 程序编制 调试 结果数据结构涉及到:数学模型的建立和对该模型具体实现的对应的算法,一个课题的解决原则,求解梁架结构中应力的数学模型是线性方程组预报人口增长情况的数学模型是微分方程,分析问题提取操作对象找出操作对象之间的关系用数学的语言加以描述,45,数据结构研究什么,问题,数学模型,实现,机外表示,即外
14、表示,存储结构,实现,逻辑结构,基本运算,处理要求,机外表示,数据结构的研究内容:(1)要对所加工的对象进行逻辑组织。(2)如何把加工对象存储到计算机中去?(3)数据运算。,建模,求精,1.1 什么是数据结构,DS主要研究内容:数据的各种逻辑结构和物理结构,以及它们之间的相应关系并对每种结构定义相适应的各种运算设计出相应的算法分析算法的效率,常见的数据结构有:数组、栈、队列、表、串、树、图 和文件等,1.1 什么是数据结构,要求:掌握各类基本数据结构类型和相应的存储结构要求学生掌握典型算法思想及程序实现;能针对给定问题,选择相适应的数据结构,并能设计和分析算法,提高复杂程序设计的能力。提高阅读
15、算法的能力为后继课的学习及从事软件开发打好基础。,1.1 什么是数据结构,上节回顾:,逻辑结构唯一存储结构不唯一运算的实现依赖于存储结构,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象及其之间关系与操作的学科。,1.1 什么是数据结构,数据Data:客观对象的符号表示。在计算机科学中,数据的含义非常广泛,把一切能够输入到计算机中并被计算机程序处理的信息,包括文字、表格,图象等,都称为数据。例如:课程名,地名,书名都是数据。再如,一个个人书库管理程序所要处理的数据可能是一张如表1-1所示的表格。,数据 数据元素 数据项,1.2 基本概念和术语,表 1-1 个人书库,数据元素Data
16、 Element:数据的基本单位。在计算机程序中通常作为一个整体考虑和处理。如,在表1-1所示的个人书库中,为了便于处理,把其中的每一行(代表一本书)作为一个基本单位来考虑,故该数据由10个数据元素构成。一般情况下,一个数据元素中含有若干个数据项.,1.2 基本概念和术语,数据对象 结构 数据结构,数据对象Data Object具有相同特性的数据元素的一个集合,是数据的子集.,例:整数数据对象是集合0,1,-1,2,-2,扑克牌上的点数的数据对象是2,3,4,5J,Q,K,A字母的数据对象是集合A,B,CX,Y,Z,1.2 基本概念和术语,数据对象可以是有限的,也可以是无限的,其中的数据不是孤
17、立的,而是彼此相关联的,这种数据元素相互之间的关系称为结构.,数据结构Data Structure相互之间存在一种或多种特定关系的数据元素的集合,即带结构的数据元素的集合.,1.2 基本概念和术语,数据逻辑结构,数据存储结构,运算,数据元素之间的逻辑关系分为(数据逻辑结构)1)元素之间没有关系-集合2)元素之间有线性关系-线性数据结构(线性表结构)3)元素之间有层次关系-层次数据结构(树结构)4)元素之间有网状关系-网状数据结构(图结构),1.2 基本概念和术语,例1:某班学生基本情况登记表,记录了每个学生的学号 姓名专业 政治 面貌,表中的记录是按学生的学号顺序排列的.,学号 姓名 专业 政
18、治面藐 001 王洪 计算机 党员 002 孙文 计算机 团员 003 谢军 计算机 团员 004 李辉 计算机 团员 005 沈祥福 计算机 党员 006 余斌 计算机 团员 007 巩力 计算机 团员 008 孔令辉 计算机 团员,学生基本情况登记表的图示,学号关系是一种线性结构关系,1.2 基本概念和术语,例2 家族的族谱 家族的族谱反映的是家族成员之间的血缘关系,假设某家族有10个成员A,B,C,D,E,F,G,H,I,J,他们之间的血缘关系可以用如下图表示。,这种分支结构关系被称为树结构。本例中树称为家族树,它很象一棵倒置的树,A 是树的根。,家族树的图示表示,1.2 基本概念和术语
19、,例3 教学计划编排问题,学生基本情况表的二元组表示(D,S),二元组表示 二元组表示是用一个二元组(D,S)表示数据结构,其中 D 是数据元素集合,S 是 D 上关系的集合。,D=001,002,003,004,005,006,007,008S=R R=,1.2 基本概念和术语,家族的族谱 家族的族谱反映的是家族成员之间的血缘关系,假设某家族有10个成员A,B,C,D,E,F,G,H,I,J,他们之间的血缘关系可以用如下图表示。,家族树的图示表示,1.2 基本概念和术语,D=S=R R=,家族树的二元组表示(D,S),D=A,B,C,D,E,F,G,H,I,J S=R R=A,B,1.2 基
20、本概念和术语,课程先后关系的图形描述形式,图 1-2 计算机专业必修课程开设先后关系,例假设我们需要编制一个事务管理的程序,管理学校科学研究课题小组的各项事务,则首先要为程序的操作对象课题小组设计一个数据结构。假设每个小组由一位教师、一至三名研究生及一至六名本科生组成,小组成员之间的关系是:教师指导研究生,而由每位研究生指导一至两名本科生。则可以如下定义数据结构:Group=(D,S)其中:D=T,G1,Gn,S11Snm 1|1|1=i=n,1=j=m,1=n=3,1=m=2,数据的存储结构数据结构在计算机中的表示(映象),即数据结构在计算机中的组织形式.又称为数据的物理结构.,1.2 基本
21、概念和术语,数据元素在计算机中的映射-结点数据项在计算机中的映射-数据域,1.2 基本概念和术语,数据在计算机中的存储:只有两种形式顺序:数据元素逐个连续存放(通过物理相邻来确定关系)非顺序:数据元素任意存放(通过存储地址确定关系),数据结构的存储要把数据元素存放起来还必须把数据元素之间的逻辑关系也表示出来,数据元素的逻辑关系要么用数据元素在物理上相邻来表示逻辑关系要么用数据元素的存储地址(指针)来表示逻辑关系,1.2 基本概念和术语,存储结构(Storge Structure):数据结构在计算机中的表示(或称映象)称为数据的存储结构,又称为物理结构。四种基本的存储方法:(1)顺序存储方法(顺
22、序存储结构)(2)链接存储方法(链式存储结构)(3)索引存储方法(4)散列存储方法 同一种逻辑结构可采用不同的存储方法(以上四种之一或组合),这主要考虑的是运算方便及算法的时空要求。,1 顺序存储将数据存储在连续存储区域M的相邻的存储单元中,使得逻辑相邻的结点一定是物理位置相邻。,对于一个数据结构B=(K,R)其中K=k1,k2,k3,k4,k5,k6,k7,k8,k9 R=r r=,它的顺序存储方式如图所示,2 链式存储给每个结点附加一个地址域,一个结点的地址域所指的是该结点的后继的存储地址,逻辑相邻的数据元素在物理上(内存存储位置)不一定相邻。,例 数据的逻辑结构B=(K,R)其中 K=k
23、1,k2,k3,k4,k5 R=r R=,这是一个线性结构,链式存储如图所示,顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。所有元素存放在一片连续的存贮单元中,逻辑上相邻的元素存放到计算机内存仍然相邻。链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。所有元素存放在可以不连续的存贮单元中,但元素之间的关系可以通过地址确定,逻辑上相邻的元素存放到计算机内存后不一定是相邻的。,如何描述存储结构呢?我们可以借用高级程序语言中提供的“数据类型”来描述它.例如:可以用“一维数组”类型来描述顺序存储结构,以C语言提供的“指针”来描述链
24、式存储结构。,例:复数3.02.3i 的两种存储方式:,法1:地址 内容,法2:地址 内容,2字节,逻辑结构、存贮结构、运算这三个方面的关系为:(1)逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合上的若干关系来表示;数据的逻辑结构独立于计算机,是数据本身所固有的。(2)存贮结构是逻辑结构在计算机存贮器中的映像,必须依赖于计算机。(3)运算是指所施加的一组操作总称。运算的定义直接依赖于逻辑结构,但运算的实现必须依赖于存贮结构。数据的逻辑结构和物理结构是密切相关的两个方面,任何一个算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的存储结构。,数据类
25、型Data Type一个值的集合和定义在这个值集上的一组操作的总称.,(1)高级语言中的数据类型实际上包括:数据的逻辑结构,数据的存储结构及所定义的操作的实现.(2)高级语言中的数据类型按值的不同特性分为:原子类型(如整型,实型,字符型,布尔型)结构类型(如数组),1.2 基本概念和术语,(3)数据类型并不局限于高级语言,它实际上是一个广义的概念.例如:”教师”就是一个数据类型,他有值”教龄”,有操作”教书”等;如果具体说小学教师,大学教师,可以看作时一个具体的类型.(4)可以撇开计算机不考虑,现实中任何一个问题都可以定义为一个数据类型-称为抽象数据类型,1.2 基本概念和术语,抽象数据类型A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言版 严蔚敏 绪论

链接地址:https://www.31ppt.com/p-5355734.html