《数据结构——C语言描述(第二版)》第二版全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.ppt
《《数据结构——C语言描述(第二版)》第二版全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.ppt》由会员分享,可在线阅读,更多相关《《数据结构——C语言描述(第二版)》第二版全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.ppt(353页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、普通高等教育“十一五”国家级规划教材21世纪高职高专新概念教材 数据结构C语言描述(第二版)前前 言言二十一世纪是科学技术高速发展的信息时代,而计算机是处理信息的主要工具,因此,人们已经认识到,计算机知识已成为人类当代文化的一个重要组成部分。计算机科学技术以惊人的速度向前发展,它的广泛应用已从传统的数值计算领域发展到各种非数值计算领域。在非数值计算领域里,数据处理的对象已从简单的数值发展到一般的符号,进而发展到具有一定结构的数据。在这里,面临的主要问题是:针对每一种新的应用领域的处理对象,如何选择合适的数据表示(构构),如何有效地组织计算机存贮,并在此基础上又如何有效地实现对象之间的“运算”关
2、系。传统的解决数值计算的许多理论、方法和技术已不能满足解决非数值计算问题的需要,必须进行新的探索。数据结构就是研究和解决这些问题的重要基础理论。因此,“数据结构”课程已成为计算机类专业的一门重要专业基础课。数据结构是程序设计的中级课程,主要培养学生分析数据、组织数据的能力,告诉学生如何编写效率高、结构好的程序。本书作为计算机大专系列教材之一,在内容的选取、概念的引入、文字的叙述以及例题和习题的选择等方面,都力求遵循面向应用、逻辑结构简明合理、由浅入深、深入浅出、循序渐进、便于自学的原则,突出其实用性与应用性。全书共分十章。书中,安排了相当的篇幅来介绍这些基本数据结构的实际应用。教学要求教学要求
3、1 1了解:数据结构这门学科发展历史以及了解:数据结构这门学科发展历史以及在计算机科学中所处的地位。在计算机科学中所处的地位。2 2掌握:与数据结构有关的概念和术语。掌握:与数据结构有关的概念和术语。3 3掌握:如何评价一个算法的好坏。掌握:如何评价一个算法的好坏。第一章第一章 绪论绪论主要内容主要内容1.1 引言1.2 数据结构的发展简史及其在计算机科学中所处的地位1.3 什么是数据结构 1.4 基本概念和术语1.5 算法和算法的描述1.1引言众所周知,二十世纪四十年代,电子数字计算机问世的直接原因是解决弹道学的计算问题。早期,电子计算机的应用范围,几乎只局限于科学和工程的计算,其处理的对象
4、是纯数值性的信息,通常,人们把这类问题称为数值计算。近三十年来,电子计算机的发展异常迅猛,这不仅表现在计算机本身运算速度不断提高、信息存储量日益扩大、价格逐步下降,更重要的是计算机广泛地应用于情报检索、企业管理、系统工程等方面,已远远超出了科技计算的范围,而渗透到人类社会活动的一切领域。与此相应,计算机的处理对象也从简单的纯数值性信息发展到非数值性的和具有一定结构的信息。因此,再把电子数字计算机简单地看作是进行数值计算的工具,把数据仅理解为纯数值性的信息,就显得太狭隘了。现代计算机科学的观点,是把计算机程序处理的一切数值的、非数值的信息,乃至程序统称为数据(Data),而电子计算机则是加工处理
5、数据(信息)的工具。由于数据的表示方法和组织形式直接关系到程序对数据的处理效率,而系统程序和许多应用程序的规模很大,结构相当复杂,处理对象又多为非数值性数据。因此,单凭程序设计人员的经验和技巧已难以设计出效率高、可靠性强的程序。于是,就要求人们对计算机程序加工的对象进行系统的研究,即研究数据的特性以及数据之间存在的关系数据结构(Date Structure)。1.2数据结构的发展简史及其在计算机科学中所处的地位发展史:1、“数据结构”作为一门独立的课程在国外是从1968年才开始设立的。2、1968年美国唐欧克努特教授开创了数据结构的最初体系,他所著的计算机程序设计技巧第一卷基本算法是第一本较系
6、统地阐述数据的逻辑结构和存储结构及其操作的著作。地位:1、“数据结构”在计算机科学中是一门综合性的专业基础课。2、数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。3、数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。1.3什么是数据结构计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找
7、出这些操作对象之间含有的关系,然后用数学的语言加以描述。计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。直观定义:数据结构是研究程序设计中计算机操作的对象以及它们之间的关系和运算的一门学科。1.4基本概念和术语1数据数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的描述。在计算机科学中,数据的含义非常广泛,我们把一切能够输入到计算机中并被计算机程序处理的信息,包括文字、表格、图象等,都称为数
8、据。例如,一个个人书库管理程序所要处理的数据可能是一张如表1-1所示的表格。表1-1个人书库2结点结点也叫数据元素,它是组成数据的基本单位。在程序中通常把结点作为一个整体进行考虑和处理。例如,在表1-1所示的个人书库中,为了便于处理,把其中的每一行(代表一本书)作为一个基本单位来考虑,故该数据由10个结点构成。一般情况下,一个结点中含有若干个字段(也叫数据项)。例如,在表1-1所示的表格数据中,每个结点都有登录号、书号、书名、作者、出版社和价格等六个字段构成。字段是构成数据的最小单位。3逻辑结构结点和结点之间的逻辑关系称为数据的逻辑结构。在表1-1所示的表格数据中,各结点之间在逻辑上有一种线性
9、关系,它指出了10个结点在表中的排列顺序。根据这种线性关系,可以看出表中第一本书是什么书,第二本书是什么书,等等。4存储结构数据在计算机中的存储表示称为数据的存储结构。在表1-1所示的表格数据在计算机中可以有多种存储表示,例如,可以表示成数组,存放在内存中;也可以表示成文件,存放在磁盘上,等等。5数据处理数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简单计算等的操作过程。在早期,计算机主要用于科学和工程计算,进入八十年代以后,计算机主要用于数据处理。据有关统计资料表明,现在计算机用于数据处理的时间比例达到80%以上,随着时间的推移和计算机应用的进一步普及,计算机用于数据处理的时间
10、比例必将进一步增大。6数据结构(DataStructure)数据结构是研究数据元素(DataElement)之间抽象化的相互关系和这种关系在计算机中的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。为了叙述上的方便和避免产生混淆,通常我们把数据的逻辑结构统称为数据结构,把数据的物理结构统称为存储结构(StorageStructure)。7数据类型数据类型是指程序设计语言中各变量可取的数据种类。数据类型是高级程序设计语言中的一个基本概念,它和数据结构的概念密切相关。一方面,在程序设计语言中,每一
11、个数据都属于某种数据类型。类型明显或隐含地规定了数据的取值范围、存储方式以及允许进行的运算。可以认为,数据类型是在程序设计中已经实现了的数据结构。另一方面,在程序设计过程中,当需要引入某种新的数据结构时,总是借助编程语言所提供的数据类型来描述数据的存储结构。8算法简单地说就是解决特定问题的方法(关于算法的严格定义,在此不作讨论)。特定的问题可以是数值的,也可以是非数值的。解决数值问题的算法叫做数值算法,科学和工程计算方面的算法都属于数值算法,如求解数值积分,求解线性方程组、求解代数方程、求解微分方程等。解决非数值问题的算法叫做非数值算法,数据处理方面的算法都属于非数值算法。例如各种排序算法、查
12、找算法、插入算法、删除算法、遍历算法等。数值算法和非数值算法并没有严格的区别。一般说来,在数值算法中主要进行算术运算,而在非数值算法中主要进行比较和逻辑运算。另一方面,特定的问题可能是递归的,也可能是非递归的,因而解决它们的算法就有递归算法和非递归算法之分。从理论上讲,任何递归算法都可以通过循环,堆栈等技术转化为非递归算法。1.5 算法和算法的描述算法和算法的描述1.5.1算法算法是执行特定计算的有穷过程。这个过程有5个特点:1.动态有穷:当执行一个算法时,不论是何种情况,在经过了有限步骤后,这个算法一定要终止。2.确定性:算法中的每条指令都必须是清楚的,指令无二义性。3.输入:具有0个或0个
13、以上由外界提供的量。4.输出:产生1个或多个结果。5.可行性:每条指令都充分基本,原则上可由人仅用笔和纸在有限的时间内也能完成。注意:算法和程序是有区别的,即程序未必能满足动态有穷。在本书中,我们只讨论满足动态有穷的程序,因此“算法”和“程序”是通用的。一个算法可以用自然语言、数字语言或约定的符号来描述,也可以用计算机高级程序语言来描述,如Pascal语言、C语言或伪代码等。本书选用C语言作为描述算法的工具。现简单说明C语言的语法结构如下:1.5.2算法的描述1预定义常量和类型:#defineTRUE1;#defineFALSE-1;#defineERRORNULL;2函数的形式数据类型函数名
14、(形式参数)形式参数说明;内部数据说明;执行语句组;/*函数名*/函数的定义主要由函数名和函数体组成,函数体用花括号“”和“”括起来。函数中用方括号括起来的部分为可选项,函数名之间的圆括号不可省略。函数的结果可由指针或别的方式传递到函数之外。执行语句可由各种类型的语句所组成,两个语句之间用“;”号分隔。可将函数中的表达式的值通过return语句返回给调用它的函数。最后的花括号“”之后的/*函数名*/为注释部分,可舍。3赋值语句简单赋值:变量名=表达式,它表示将表达式的值赋给左边的变量;变量+,它表示变量加1后赋值给变量;变量-,它表示变量减1后赋值给变量;成组赋值:1.(变量1,变量2,变量3
15、,变量k)=(表达式1,表达式2,表达式3,表达式k);2.数组名1下标1下标2=数组名2下标1下标2串联赋值:变量1=变量2=变量3=变量k=表达式;条件赋值:变量名=条件表达式?表达式1:表达式2;交换赋值:变量1变量2,表示变量1和变量2互换;4条件选择语句if(表达式)语句;if(表达式)语句1;else语句2;情况语句switch(表达式)case判断值1;语句组1;break;case判断值2;语句组2;break;case判断值n;语句组n;break;default:语句组;break;注意:switchcase语句是先计算表达式的值,然后用其值与判断值相比较,若它们相一致时,
16、就执行相应的case下的语句组;若不一致,则执行default下的语句组;其中的方括号代表可选项。5循环语句 for语句for(表达式1;表达式2;表达式3)循环体语句;首先计算表达式1的值,然后求表达式2的值,若结果非零则执行循环体语句,最后对表达式3运算,如此循环,直到表达式2的值为零时止。while语句while(条件表达式)循环体语句;while循环首先计算条件表达式的值,若条件表达式的值非零,则执行循环体语句,然后再次计算条件表达式,重复执行,直到条件表达式的值为假时退出循环,执行该循环之后的语句。do-while语句do循环体语句while(条件表达式)该循环语句首先执行循环体语句
17、。然后再计算条件表达式的值,若条件表达式成立,则再次执行循环体,再计算条件表达式的值,直到条件表达式的值为零,即条件不成立时结束循环。6输入、输出语句输入语句:用函数scanf实现,特别当数据为字符时,用getchar函数实现。输出语句:用printf函数实现,当要输出字符数据时,用putchar函数实现。7其他一些语句(1)return表达式或return:用于函数结束。(2)break语句:可用在循环语句或case语句中结束循环过程或跳出情况语句。(3)exit语句:表示出现异常情况时,控制退出语句。8注释形式可用/*字符串*/或者单行注释或/文字序列。9一些基本的函数如:max函数,用于
18、求一个或几个表达式中的最大值;min函数,用于求一个或几个表达式中的最小值;abs函数,用于求表达式的绝对值;eof函数,用于判定文件是否结束;eoln函数,用于判断文本行是否结束。例计算f=1!+2!+3!+n!,用C语言描述。voidfactorsum(n)intn;inti,j;intf,w;f=0;for(i=1,i=n;i+)w=1;for(j=1,j=i;j+)w=w*j;f=f+w;return;上述算法所用到的运算有乘法、加法、赋值和比较,其基本运算为乘法操作。在上述算法的执行过程中,对外循环变量i的每次取值,内循环变量j循环i次。因为内循环每执行一次,内循环体语句w=w*j只
19、作一次乘法操作,即当内循环变量j循环i次时,内循环体的语句w=w*j作i次乘法。所以,整个算法所作的乘法操作总数是:f(n)=1+2+3+n=n(n-1)/2。1.5.3算法评价设计一个好的算法应考虑以下几个方面:1正确性“正确”的含义在通常的用法中有很大的差别,大体可分为以下四个层次:程序不含语法错误;程序对于几组输入数据能够得出满足规格说明要求的结果;程序对于精心选择的典型、苛刻而带有刁难性的几组数据能够得出满足规格说明要求的结果;程序对一切合法的输入数据都能产生满足规格说明要求的结果。2运行时间运行时间是指一个算法在计算机上运算所花费的时间。它大致等于计算机执行一种简单操作(如赋值操作、
20、转向操作、比较操作等等)所需要的时间与算法中进行简单操作次数的乘积。通常把算法中包含简单操作次数的多少叫做算法的时间复杂性,它是一个算法运行时间的相对量度。3占用的存储空间一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入、输出数据所占用的存储空间和算法运行过程中临时占用的存储空间。分析一个算法所占用的存储空间要从各方面综合考虑。算法在运行过程中所占用的存储空间的大小被定义为算法的空间复杂性。它包括局部变量所占用的存储空间和系统为了实现递归所使用的堆栈这两个部分。算法的空间复杂性一般以数量级的形式给出。4简单性最简单和最直接的算法往往不是最有效的,但算法的简
21、单性使得证明其正确性比较容易,同时便于编写、修改、阅读和调试,所以还是应当强调和不容忽视的。不过对于那些需要经常使用的算法来说,高效率(即尽量减少运行时间和压缩存储空间)比简单性更为重要。本章小结本章小结本章主要介绍了如下一些基本概念:数数据据结结构构:数据结构是研究数据元素之间抽象化的相互关系和这种关系在计算机中的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数数据据:数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的描述。在计算机科学中,数据的含义非常广泛,
22、我们把一切能够输入到计算机中并被计算机程序处理的信息,包括文字、表格、图象等,都称为数据。结点:结点:结点也叫数据元素,它是组成数据的基本单位。逻逻辑辑结结构构:结点和结点之间的逻辑关系称为数据的逻辑结构。存存储储结结构构:数据在计算机中的存储表示称为数据的存储结构。数数据据处处理理:数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简单计算等的操作过程。数数据据类类型型:数据类型是指程序设计语言中各变量可取的数据种类。数据类型是高级程序设计语言中的一个基本概念,它和数据结构的概念密切相关。习习 题题 一一1简述下列术语:数据、结点、逻辑结构、存储结构、数据处理、数据结构和数据类型。
23、2试根据以下信息:校友姓名、性别、出生年月、毕业时间、所学专业、现在工作单位、职称、职务、电话等,为校友录构造一种适当的数据结构(作图示意),并定义必要的运算和用文字叙述相应的算法思想。3什么是算法?算法的主要特点是什么?4如何评价一个算法?教学要求1了解:线性表的定义和基本运算。2掌握:线性表的两种存储结构:顺序存储结构和链式存储结构的描述方式,以及这两种存储结构上的基本运算的实现算法。3了解:线性表处理一元多项式的操作方法及其算法的实现。4掌握:线性表的两种存储结构的特点及其具体实现。第二章第二章 线性表线性表主要内容2.1线性表的逻辑结构线性表的逻辑结构2.2 线性表的顺序存储结构线性表
24、的顺序存储结构 2.3 线性表的链式存储结构线性表的链式存储结构2.4 一元多项式的表示及相加一元多项式的表示及相加 2.5实训实训 2.1 线性表的逻辑结构线性表的逻辑结构线性表由一组具有相同属性的数据元素构成。数据元素的含义广泛,在不同的具体情况下,可以有不同的含义。例如:英文字母表(A,B,C,Z)是一个长度为26的线性表,其中的每一个字母就是一个数据元素;再如,某公司2000年每月产值表(400,420,500,600,650)(单位:万元)是一个长度为12的线性表,其中的每一个数值就是一个数据元素。上述两例中的每一个数据元素都是不可分割的,在一些复杂的线性表中,每一个数据元素又可以由
25、若干个数据项组成,在这种情况下,通常将数据元素称为记录(record),例如,图2-1的某单位职工工资表就是一个线性表,表中每一个职工的工资就是一个记录,每个记录包含八个数据项:职工号、姓名、基本工资。职工号姓名基本工资岗位工资奖金应发工资扣款实发工资1201张强54030020010402010201301周敏500200200900208801202徐黎芬55030020010503010201105黄承振53025020098020960图2-1职工工资表矩阵也是一个线性表,但它是一个比较复杂的线性表。在矩阵中,我们可以把每行看成是一个数据元素,也可以把每列看成是一个数据元素,而其中的每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构C语言描述第二版 数据结构 语言 描述 第二 全套 电子 课件 完整版 ppt 教案 教学 教程 整套
链接地址:https://www.taowenge.com/p-72346641.html
限制150内