ImageVerifierCode 换一换
格式:DOCX , 页数:71 ,大小:73.69KB ,
资源ID:6264818      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6264818.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(成人函授教育.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

成人函授教育.docx

1、成人函授教育成人函授教育数据结构自学指导书适用计算机专业、本(专)科黑龙江科技学院成教院目 录一、前 言2二、自学指导3三、各章节自学参考4第一章 数据结构基本概念及简单的算法分析 4第二章 线性表 5第三章 栈和队列10第四章 串11第五章 数组和广义表12第六章 树和二叉树13第七章 图17第八章 查找19第九章 排序22四、期末考试试题类型说明.34一、前言 1、本课程的性质和任务数据结构课程是计算机专业的一门专业基础课。它涉及在计算机中如何有效地表示数据,如何合理地组织数据和处理数据。内容包括:线性表、链表、栈和队列、串、数组和广义表,树和二叉树、图、查找、排序等。还涉及初步的算法设计

2、和算法性能分析技术。学好数据结构课程,将为后续的专业课程,如数据库系统、操作系统、编译原理等,打下良好的知识基础,而且还为软件开发和程序设计提供了必要的技能训练。本课程要求学员对计算机的组成有基本的了解,对程序设计方法有一定基础,对c语言编程,有一定的了解。对涉及离散数学的知识,如表、树、图、集合等,有初步的了解。事实上,课程讲授中将会简单地补充这些方面的内容。2、本课程的自学方法 (1) 考虑到函授学员的特点,对数据结构及算法设计的要求不能象本科生那样。因此,课程教学重点是介绍各种常用的数据结构及其实现。在每节授课过程中,首先提示本节应掌握的概念,再给出结构的类(抽象数据类型)定义和主要操作

3、的实现。在讨论算法时主要给出算法实现的思路,以及算法实现的框架。在每一节最后,对讨论过的内容做一小结,提示本节的要点及容易出错的地方。使学员能够切实掌握每一种数据结构的特点和实现。 (2) 按照数据结构课程教学大纲的要求,课程的讲授将从面向过程的概念、数据结构的层次开始。从线性结构到非线性结构,从简单到复杂,循序渐进,逐步深入。 (3) 学好一门课程,教师的引导固然十分重要,但主要靠学员的自身努力。课堂教学可以起到画龙点睛的作用,但只有不断练习,才能巩固、掌握课程的内容。因此,本课程要求学员积极独立完成所布置的习题。3、主要教学环节考试说明:(1) 在教学大纲和考核说明所规定的知识范围内命题。

4、在教学知识范围之内,需要灵活运用才能够解决问题的试题不属于超纲。 (2) 试题的考察要求覆盖面广、区分度高。 (3) 试题兼顾各个能力层次,理解占40%,简单运用占40%,综合运用占20%。 (4) 试题的难易程度和题量适当,按难易程度分为四个层次:容易占25%,较易占35%,较难占25%,难占15%。题量安排以平时能够独立完成作业者,使他们能在规定的考试时间内做完并有一定时间检查为原则。本课程使用的教材为数据结构C语言描述,本教材充分起到了自学、助学和导学作用,系统地、完整地介绍各种数据结构的特点、实现及应用。教材为:数据结构C语言描述 耿国华等编著;西安电子科技大学出版社,2002年2月出

5、版。 适用专业层次:本科。二、自学进度表自 学 进 度 要 求面授时数备注周次日期预习重点自学各章节内容自学时数1线性表栈和队列第一章 绪论第二章 线性表第三章 栈和队列77作业2.2、2.3、3.1、3.22串数组和广义表第四章 串第五章 数组和广义表44作业4.43树和二叉树第六章 树和二叉树446.9、6.114图第七章 图 7.1-7.4337.1、7.35图查找第七章 图 7.5-7.6第八章 查找8.1-8.2337.6、8.2、8.46查找第八章 查找8.3-8.4338.5、8.117内部排序第九章 内部排序339.1、9.28内部排序外部排序第九章 内部排序第十章 外部排序3

6、39.7、9.1810.5三、主要章节指导及说明第一章 数据结构基本概念及简单的算法分析1、教学内容:什么是数据结构;抽象数据类型及面向对象概念:数据类型;数据抽象与抽象数据类型;面向过程的概念;用于描述数据结构的语言;数据结构的抽象层次;算法定义;性能分析与度量:算法的性能标准;空间复杂度度量;时间复杂度度量;2、教学要求:了解:什么是数据、数据对象、数据元素、数据结构、数据的逻辑结构与物理结构、逻辑结构与物理结构间的关系;了解:什么是数据类型、抽象数据类型、数据抽象和信息隐蔽原则。了解:算法的定义、算法的特性、算法的时间代价、算法的空间代价掌握:用C语言描述算法的方法;3、习题与解答:(1

7、)、什么是数据结构? 有关数据结构的讨论涉及哪三个方面?【解答】 数据结构是指数据以及相互之间的关系。记为:数据结构 = D, R 。其中,D是某一数据对象,R是该对象中所有数据成员之间的关系的有限集合。 有关数据结构的讨论一般涉及以下三方面的内容:1 数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构; 数据成员极其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构;3 施加于该数据结构上的操作。(2)、什么是算法? 算法的5个特性是什么? 试根据这些特性解释算法与程序的区别。【解答】 通常,定义算法为“为解决某一特定任务而规定的一个指令序列。”一个算

8、法应当具有以下特性: 有输入。一个算法必须有0个或多个输入。它们是算法开始运算前给予算法的量。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。 有输出。一个算法应有一个或多个输出,输出的量是算法计算的结果。 确定性。算法的每一步都应确切地、无歧义地定义。对于每一种情况,需要执行的动作都应严格地、清晰地规定。 有穷性。一个算法无论在什么情况下都应在执行有穷步后结束。 有效性。算法中每一条运算都必须是足够基本的。就是说,它们原则上都能精确地执行,甚至人们仅用笔和纸做有限次运算就能完成。 算法和程序不同,程序可以不满足上述的特性(4)。例如,一个操作系

9、统在用户未使用前一直处于“等待”的循环中,直到出现新的用户事件为止。这样的系统可以无休止地运行,直到系统停工。(3)、设n为正整数, 分析下列各程序段中加下划线的语句的程序步数(1) for (int i = 1; i = n; i+) for (int j = 1; j = n; j+) cij = 0.0; for (int k = 1; k data0; /* 将基准置入 x 中*/ for(i=1;ilast;i+) if(L-dataidatai; for(j=i-1;j=0;j-) /*移动*/ Ldataj+1=L-dataj; L-data0=y; 算法2.1本算法中,有两重循

10、环,外循环执行n1次,内循环中移动元素的次数与当前数据的大小有关,当第个元素小于 a1 时,要移动它上面的 i-1个元素,再加上当前结点的保存及置入,所以移动 i-1+2次,在最坏情况下,a1 后面的结点都小于 a1 ,故总的移动次数为 : 即最坏情况下移动数据时间性能为()。这个算法简单但效率低,在第章的快速排序中时我们将介绍另一种划分算法,它的性能为(n)。(2)、 已知单链表H,写一算法将其倒置。即实现如图2.2的操作。(a)为倒置前,(b)为倒置后。(b) 【解答】:依次取原链表中的每个结点,将其作为第一个结点插入到新链表中去,指针p用来指向当前结点,p为空时结束。算法如下:void

11、reverse (Linklist H) LNode *p; p=H-next; /*p指向第一个数据结点*/ H-next=NULL; /*将原链表置为空表H*/ while (p) q=p; p=p-next; q-next=H-next; /*将当前结点插到头结点的后面*/ H-next=q; 算法2.2 该算法只是对链表中顺序扫描一边即完成了倒置,所以时间性能为O(n)。(3)、 已知单链表L,写一算法,删除其重复结点,即实现如图2.3的操作。(a)为删除前,(b)为删除后。【解答】:用指针p指向第一个数据结点,从它的后继结点开始到表的结束,找与其值相同的结点并删除之;p指向下一个;依

12、此类推,p指向最后结点时算法结束。(b)算法如下:void pur_LinkList(LinkList H) LNode *p,*q,*r; p=H-next; /*p指向第一个结点*/ if(p=NULL) return; while (p-next) q=p; while (q-next) /* 从*p的后继开始找重复结点*/ if (q-next-data=p-data) r=q-next; /*找到重复结点,用r指向,删除*r */ q-next=r-next; free(r); /*if*/ else q=q-next; /*while(q-next)*/ p=p-next; /*p

13、指向下一个,继续*/ /*while(p-next)*/算法2.3该算法的时间性能为O(n2)。(4)、 设有两个单链表A、B,其中元素递增有序,编写算法将A、B归并成一个按元素值递减(允许有相同值)有序的链表C,要求用A、B中的原结点形成,不能重新申请结点。算法思路:利用A、B两表有序的特点,依次进行比较,将当前值较小者摘下,插入到C表的头部,得到的C表则为递减有序的。【解答】:LinkList merge(LinkList A,LinkList B) /*设A、B均为带头结点的单链表*/ LinkList C; LNode *p,*q; p=A-next;q=B-next; C=A; /*

14、C表的头结点*/ C-next=NULL;free(B);while (p&q) if (p-datadata) s=p;p=p-next; else s=q;q=q-next; /*从原AB表上摘下较小者*/s-next=C-next; /*插入到C表的头部*/ C-next=s; /*while */if (p=NULL) p=q;while (p) /* 将剩余的结点一个个摘下,插入到C表的头部*/ s=p;p=p-next;s-next=C-next; C-next=s; 算法2.4该算法的时间性能为O(m+n)。第三章 栈和队列1、教学内容:栈:栈的抽象数据类型;栈的顺序存储表示;栈

15、的链接存储表示队列 :队列的抽象数据类型;队列的顺序存储表示;队列的链接存储表示;队列的应用举例;2、教学要求:熟练掌握:栈的定义、特性和栈的抽象数据类型,栈的顺序表示、链表表示以及相应操作的实现。特别注意栈空和栈满的条件了解:在表达式计算时栈是如何使用的;熟练掌握:队列的定义、特性和队列的抽象数据类型,队列的顺序表示、链表表示以及相应操作的实现。特别是循环队列中队头与队尾指针的变化情况;3、习题与解答:1、 铁路进行列车调度时, 常把站台设计成栈式结构的站台,如右图所示。试问: (1) 设有编号为1,2,3,4,5,6的六辆列车, 顺序开入栈式结构的站台, 则可能的出栈序列有多少种? (2)

16、 若进站的六辆列车顺序如上所述, 那么是否能够得到435612, 325641, 154623和135426的出站序列, 如果不能, 说明为什么不能; 如果能, 说明如何得到(即写出进栈或出栈的序列)。【解答】(1) 可能的不同出栈序列有 种。 (2) 不能得到435612和154623这样的出栈序列。因为若在4, 3, 5, 6之后再将1, 2出栈,则1, 2必须一直在栈中,此时1先进栈,2后进栈,2应压在1上面,不可能1先于2出栈。154623也是这种情况。出栈序列325641和135426可以得到。3562244 44111111115344122226第四章 串1、教学内容:字符串:字

17、符串的抽象数据类型;字符串操作的实现;2、教学要求:熟练掌握:字符串的定义及实现第五章 数组和广义表1、教学内容:作为抽象数据类型的数组:数组的定义和初始化;作为抽象数据类型的数组;数组的顺序存储方式;2、教学要求:了解:作为抽象数据类型的数组的定义,数组的按行顺序存储与按列顺序存储;了解:稀疏矩阵的定义及其数组实现; 3、习题与解答: (1)、 画出下列广义表的图形表示和它们的存储表示: (1) D(A(c), B(e), C(a, L(b, c, d) (2) J1(J2(J1, a, J3(J1), J3(J1) 【解答】:(1) D(A(c), B(e), C(a, L(b, c, d

18、) (2) J1(J2(J1, a, J3(J1), J3(J1)J1J2J3CBADcbaeLadc0 J122J1A0 B B0 A 1 e 2 2 0 D D1 c 2 J21 a20 J220 C 2 1 a C0 J3J320 L 1 d1 c 1 b L第六章 树和二叉树1、教学内容:树和森林的概念:树的定义;树的术语;树的抽象数据类型;二叉树:二叉树的定义;二叉树的性质;二叉树的抽象数据类型二叉树的表示:顺序表示;二叉链表表示遍历二叉树:中序遍历;前序遍历;后序遍历;应用二叉树遍历的事例;二叉树的计数堆:堆的定义;堆的建立;堆的插入与删除;堆的调整算法树与森林:树的存储表示;森林

19、与二叉树的转换;遍历树;遍历森林哈夫曼树:路径长度;哈夫曼树;霍夫曼编码2、教学要求:了解:树和森林的概念。包括树的定义、树的术语、树的抽象数据类型掌握:二叉树的概念、性质及二叉树的表示熟练掌握:二叉树的遍历方法 掌握:树与森林的实现,重点在用二叉树实现掌握:森林与二叉树的转换;树的遍历算法掌握:二叉树的计数方法及从二叉树遍历结果得到二叉树的方法掌握:哈夫曼树的实现方法、构造哈夫曼编码的方法及带权路径长度的计算3、习题与解答:(1)、列出右图所示二叉树的叶结点、分支结点和每个 结点的层次。【解答】 二叉树的叶结点有、。分支结点有、。 结点的层次为0;结点、的层次为1;结点、的层次为2;结点、的

20、层次为3;结点的层次为4。 (2)、 使用 (1) 顺序表示和 (2) 二叉链表表示法,分别画出右图所示二叉树的存储表示。【解答】0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 顺序表示 二叉链表表示 (3)、在结点个数为n (n1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点? 【解答】结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。(4)、试分别画出具有3个

21、结点的树和3个结点的二叉树的所有不同形态。【解答】 具有3个结点的树 具有3个结点的二叉树 (5)、请画出右图所示的树所对应的二叉树。1【解答】12254433对应二叉树5766887 (6)、已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是EBCDAFHIGJ, 试画出这棵二叉树。【解答】当前序序列为ABECDFGHIJ,中序序列为EBCDAFHIGJ时,逐步形成二叉树的过程如下图所示: AAAAFBBFFBGECGECHIGJCDEFHIGJHDJHIJDIEBCD(7)、 给定权值集合15, 03, 14, 02, 06, 09, 16, 17, 构造相应的霍夫曼

22、树, 并计算它的带权外部路径长度。【解答】()05171609061415F:17160906021415020303()171609141520161415()17110911060502030605()332029020329161720()16171109151414110915050606050203020382()4933()4933172920161716292014110915110915140605060503020302 此树的带权路径长度WPL = 229。(8)、 假定用于通信的电文仅由8个字母c1, c2, c3, c4, c5, c6, c7, c8组成, 各字母在电

23、文中出现的频率分别为5, 25, 3, 6, 10, 11, 36, 4。试为这8个字母设计不等长Huffman编码, 并给出该电文的总码数。【解答】已知字母集 c1, c2, c3, c4, c5, c6, c7, c8 ,频率 5, 25, 3, 6, 10, 11, 36, 4 ,则Huffman编码为 c1 c2 c3 c4 c5 c6 c7 c8 0110 10 0000 0111 001 010 11 0001 电文总码数为 4 * 5 + 2 * 25 + 4 * 3 + 4 * 6 + 3 * 10 + 3 * 11 + 2 * 36 + 4 * 4 = 25710100139611001100C217223625C771111101100C6C55634C4C1C8C3第七章 图1、教学内容:图的基本概念:图的基本概念;图的抽象数据类型图的存储表示:邻接矩阵;邻接表;邻接多重表 图的遍历与连通性:深度优先搜索;广度优先搜索;连通分量;关节点与重连通分量最小生成

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1