北大裘宗燕《从问题到程序》第九章 结构和其他数据机制
- 格式:ppt
- 大小:169.00 KB
- 文档页数:87
本文由FUKA2010贡献 pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
内容简介 《数据结构》(C 语言版)的第 1 章综述数据、数据结构和抽象数据类型等基本概念;第 2 章 至第 7 章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉 树以及图等基本类型的数据结构及其应用;第 8 章综合介绍操作系统和编译程序中涉及的动态 存储管理的基本技术;第 9 章至第 11 章讨论查找和排序,除了介绍各种实现方法之外,并着重 从时间上进行定性或定量的分析和比较;第 12 章介绍常用的文件结构。
《数据结构》 (C 语言版)的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其 应用;后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。
其内容和章节编排 1992 年 4 月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概 念。
全书采用类 C 语言作为数据结构和算法的描述语言。
市场价: ¥ 30.00 卓越价: ¥ 22.50 此商品可以享受免费送货 编辑推荐 《数据结构》(C 语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的 C 程序设计的参数教材。
本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用; 后半部分主要讨 论查找和排序的各种实现方法及其综合分析比较。
其内容和章节编排 1992 年 4 月出版的《数 据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。
全书采用类 C 语言 作为数据结构和算法的描述语言。
本书概念表述严谨,逻辑推理严密,语言精炼,用词达意,并有配套出版的《数据结构题集》 (C 语言版),便于教学,又便于自学。
本书后附有光盘。
光盘内容可在 DOS 环境下运行的以类 C 语言描述的“数据结构算法动态模拟 辅助教学软件,以及在 Windows 环境下运行的以类 PASCAL 或类 C 两种语言描述的“数据结 构算法动态模拟辅助教学软件”。
第三章 变量、函数和控制结构学了第二章介绍的内容,我们还只能描述从基本数据出发的简单计算过程,写出的程序描述的也仅是某个特定计算,能算出(输出)一个具体结果。
如果需要对其他数据做同样计算,也必须改写原程序,在表达式里改用新的数据,经过重新编译连接,得到新的可执行程序后才能做。
这样直接修改程序很不方便,而且还可能改错。
此外,即使程序里有同样的计算,我们也需要把同样程序片段重复写几遍。
例如,在前章最后已知三边求三角形面积的程序里,就包含了几个同样的子表达式。
这种重复使程序无必要地变复杂了。
如果需要程序解决的问题更大更复杂,设法使每个计算片段只描述一次也会变得越来越重要。
下面的许多讨论都与此有关。
在前一章里,读者也看到一些有意思的例子。
C标准库里提供了一些数学函数,每个数学函数实现一种常用计算。
令人感兴趣的是,我们可以方便地将这种函数用于不同数据,得到相应的结果。
如果能在程序中定义自己所需的函数,定义后又能像标准库的数学函数那样使用,那么就从一个角度解决了上面提出的某些问题。
本章将讨论C语言的一些重要编程机制,介绍如何使用它们去做程序设计。
其中的主要问题包括:变量的概念和使用,函数的定义和使用,描述计算流程的若干基本控制结构。
读者将看到一些程序实例,还能看到一些关于从问题出发进行程序设计的分析过程的讨论。
人们还希望完成的程序更具通用性,能方便地对不同数据实现同样计算。
如何为程序提供计算所用的数据是另一个问题,将在后面章节里讨论。
3.1语句、复合结构C程序中描述计算过程的基本单位是语句。
一个语句是由分号结束的一段字符,例如第一章给出的简单C程序里就包括了下面语句:printf("Good morning!\n");语句必须在形式上符合要求,否则就是非法的。
这是语法问题,编译程序能检查出程序里的语法错误。
另一方面,每个形式合法的语句都表达了一种含义,表示在程序执行中要做的一个动作,这称为语句的语义。
第九章查找一、填空题1.在数据的存放无规律而言的线性表中进行检索的最佳方法是顺序查找(线性查找) 。
2.线性有序表(a i,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索_8 次。
设有100个结点,用二分法查找时,最大比较次数是_7_ ____________ 。
3•假设在有序线性表a[1..2O]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为_2 ___________ ;比较四次查找成功的结点数为8 ,其下标从小到大依次是1,3,6,8,11,13,16,19 _ ,平均查找长度为 3.7 。
解:显然,平均查找长度二0( log 2n) <5次(25)。
但具体是多少次,则不应当按照公式ASL =U|°g2(n⑴来计算(即(21 X log 221) /20 = 4.6次并不正确!)。
因为这是在假设n = 2m-1 n 的情况下推导出来的公式。
应当用穷举法罗列:全部元素的查找次数为=(1 + 2X 2+ 4X 3+ 8X 4+ 5X 5)= 74; ASL= 74/20=3.7 !!! 4•折半查找有序表(4, 6,12,20, 28, 38,50,70, 88,100),若查找表中元素20,它将依次与表中元素28 , 6, 12, 20 比较大小。
5. 在各种查找方法中,平均查找长度与结点个数n无关的查找方法是散列查找。
6. 散列法存储的基本思想是由关键字的值决定数据的存储地址。
7. 有一个表长为m的散列表,初始状态为空,现将n (n<m)个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。
如果这n个关键码的散列地址都相同,贝U探测的总次数是n(n-1)/2= ( 1 土2+…+ n-1 )。
(而任一元素查找次数 < n-1)&设一哈希表表长M为100,用除留余数法构造哈希函数,即H( K) =K MOIP ( P<=M ,为使函数具有较好性能,P应选(97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈_______10、对线性表进行二分查找时,要求线性表必须以顺序方式存储,且结点按关键字有序排列。
“数据结构”教学与教材研究摘要:本文回顾了著者三十多年来从事“数据结构”教学与研究的主要经历,重点介绍了对该课程的教材建设方面的主要工作,指出与时俱进、精益求精地编写教材是提高教学水平的基础和关键。
【关键词】:^p :数据结构;算法;程序设计语言;程序设计方法;教材一、前言194年2月14日,世界上第一台电子数字计算机ENIAC在美国宾夕法尼亚大学诞生。
早期计算机主要用于数值计算,处理的对象是“无结构”的数据(例如整数和浮点数),它们和处理这些数据的程序(根据计算机指令系统编写的代码)都采用二进制表示形式存储在计算机的存储器中。
20世纪50年代开始的“程序设计语言”研究,改变了原始的使用机器语言编程的方式,语言的“使用手册”给计算机的使用者提供了一个非常高级的“虚拟机”,使得程序员可以方便快捷地描述需要的数据和处理数据的程序;然后通过语言的“编译器”把它们成功地转换为计算机内部的二进制代码。
高级语言的研究成果,打破了计算机只能进行科学计算的限制。
“语言编译系统”通过计算机成功地完成从高级语言的模型到计算机硬件语言模型的转换,打开了计算机系统软件研究的大门;同时也提出许多相对比较复杂的结构化数据的需求(例如栈、散列表和二叉树等),促进了数据结构的研究和发展。
“数据结构”的概念最早是由C.A.R.Hoare和N.Wirth在196年提出。
大量关于程序设计理论的研究表明:为了系统而科学地构造大型复杂的程序,必须对这些程序中所包含的数据结构进行深入的研究。
1968年,美国教授D.E.Knuth在他的名著《计算机程序设计技巧》(第1卷基本算法第二章信息结构)中首次系统地研究并整理了当时经常使用的主要数据结构与相关的算法,为数据结构课程的开设提供了丰富的素材(他本人也因此书的成就,在1974年获得计算机界最高科学成就奖“图灵奖”)。
自20世纪70年代起,“数据结构”在西方国家的大学中,被普遍列为计算机本科的必修课程。
第一章数据结构及算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分常常考查的是算法困难度, 数据结构的概念, 栈, 二叉树的遍历, 二分法查找,读者应对此部分进行重点学习。
具体重点学习知识点:1.算法的概念, 算法时间困难度及空间困难度的概念2.数据结构的定义, 数据逻辑结构及物理结构的定义3.栈的定义及其运算, 线性链表的存储方式4.树及二叉树的概念, 二叉树的基本性质, 完全二叉树的概念, 二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应当了解算法中对数据的基本运算。
计算机解题的过程事实上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可行性, 确定性, 有穷性, 拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的限制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算, 逻辑运算, 关系运算和数据传输。
(2)算法的限制结构:算法中各操作之间的执行依次称为算法的限制结构。
描述算法的工具通常有传统流程图, N-S结构化流程图, 算法描述语言等。
一个算法一般都可以用依次, 选择, 循环3种基本限制结构组合而成。
考点2 算法困难度考试链接:考点2在笔试考试中,是一个常常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应当识记算法时间困难度及空间困难度的概念。
1.算法的时间困难度算法的时间困难度是指执行算法所须要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
这表明运用肯定的时间单位衡量算法的效率是不合适的。
撇开这些及计算机硬件, 软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依靠于问题的规模(通常用整数n表示),它是问题规模的函数。