数据结构,算法,软件工程一些知识点和习题(ByZL)

上传人:优*** 文档编号:44013702 上传时间:2021-12-05 格式:DOC 页数:21 大小:53KB
收藏 版权申诉 举报 下载
数据结构,算法,软件工程一些知识点和习题(ByZL)_第1页
第1页 / 共21页
数据结构,算法,软件工程一些知识点和习题(ByZL)_第2页
第2页 / 共21页
数据结构,算法,软件工程一些知识点和习题(ByZL)_第3页
第3页 / 共21页
资源描述:

《数据结构,算法,软件工程一些知识点和习题(ByZL)》由会员分享,可在线阅读,更多相关《数据结构,算法,软件工程一些知识点和习题(ByZL)(21页珍藏版)》请在装配图网上搜索。

1、 真诚为您提供优质参考资料,若有不当之处,请指正。第一章 数据结构与算法一.算法的基本概念计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。3.算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。4.算法设计的要求:准确性、可读性、健壮性、效率与低存储量需求二.算法的复杂度1.算法的时间复杂度:指执行算法所需要的计算工作量2.算法的空间复杂度:执行这个算法所需要的内存空间三.数据结构的定义1.数据的逻辑结构:反映数据元素之间的关系的数据元素集

2、合的表示。数据的逻辑结构包括集合、线形结构、树形结构和图形结构四种。2.数据的存储结构:数据的逻辑结构在计算机存储空间种的存放形式称为数据的存储结构。常用的存储结构有顺序、链接、索引等存储结构。四.数据结构的图形表示:在数据结构中,没有前件的结点称为根结点;没有后件的结点成为终端结点。插入和删除是对数据结构的两种基本运算。还有查找、分类、合并、分解、复制和修改等。五.线性结构和非线性结构根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构。线性结构:非空数据结构满意:有且只有一个根结点;每个结点最多有一个前件,最多只有一个后件。非线性结构:假如一个

3、数据结构不是线性结构,称之为非线性结构。常见的线性结构:线性表、栈、队列六.线性表的定义线性表是n 个元素构成的有限序列(A1,A2,A3)。表中的每一个数据元素,除了第一个以外,有且只有一个前件。除了最后一个以外有且只有一个后件。即线性表是一个空表,或可以表示为(a1a2an) 其中ai(I=12n)是属于数据对象的元素,通常也称其为线性表中的一个结点。非空线性表有如下一些特征:(1)有且只有一个根结点a1它无前件;(2)有且只有一个终端结点an,它无后件;(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。线性表中结点的个数n称为线性表的长度。当n=0时称为空表。

4、七.线性表的顺序存储结构线性表的顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素。线性表的顺序存储结构具备如下两个基本特征:1.线性表中的所有元素所占的存储空间是连续的;2.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。即线性表逻辑上相邻、物理也相邻,则已知第一个元素首地址和每个元素所占字节数,则可求出任一个元素首地址。假设线性表的每个元素需占用K个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满意下列关系:LOC(ai+1)=LOC(ai)+KLOC(ai

5、)=LOC(a1)+(i-1)*K 其中,LOC(a1)是线性表的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基地址。因为在顺序存储结构中,每个数据元素地址可以通过公式计算得到,所以线性表的顺序存储结构是随机存取的存储结构。在线性表的顺序存储结构下,可以对线性表做以下运算:插入、删除、查找、排序、分解、合并、复制、逆转八.顺序表的插入运算线性表的插入运算是指在表的第I个位置上,插入一个新结点x,使长度为n的线性表(a1a2 aian)变成长度为n+1的线性表(a1a2xaian).该算法的时间主要花费在循环的结点后移语句上,执行次数是n-I+1。当I=n+1最好情况,时间复杂度o(

6、1) 当I=1 最坏情况,时间复杂度o(n)算法的平均时间复杂度为o(n)九.顺序表的删除运算线性表的删除运算是指在表的第I个位置上,删除一个新结点x,使长度为n的线性表(a1a2 aian)变成长度为n-1的线性表(a1a2ai-1ai+1an).当I=n时间复杂度o(1)当I=1时间复杂度o(n) 平均时间复杂度为o(n)十.栈及其基本运算1.什么是栈? 栈实际上也是一个线性表,只不过是一种特别的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除这一端为栈顶(TOP),另一端为栈底(BOTTOM)。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除

7、的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。假设栈S=(a1a2a3an),则a1 称为栈底元素,an称为栈顶元素。栈中元素按a1a2a3an的次序进栈,退栈的第一个元素应该是栈顶元素。即后进先出。2.栈的顺序存储及其运算用S(1:M)作为栈的顺序存储空间。M为栈的最大容量。栈的基本运算有三种:入栈、退栈与读栈顶元素。入栈运算:在栈顶位置插入一个新元素。首先将栈顶指针进一(TOP+1),然后将新元素插入到栈顶指针指向的位置。退栈运算:指取出栈顶元素并赋给一个指定的变量。2 / 21首先将栈顶元素赋给一个指定的变量,然后将栈顶指针退一(TOP-1)读栈顶元素:将栈顶元素赋

8、给一个指定的变量。栈顶指针不会改变。十一.队列及其基本运算1.什么是队列队列是只答应在一端删除,在另一端插入的顺序表,答应删除的一端叫做对头,允许插入的一端叫做对尾。队列的修改是先进先出。往队尾插入一个元素成为入队运算。从对头删除一个元素称为退队运算。2.循环队列及其运算在实际应用中,队列的顺序存储结构一般采用循环队列的形式。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素

9、均为队列中的元素。在实际使用循环队列时,为了能区分队满还是队列空,通常需要增加一个标志S:队列空,则S=0,rear=front=m 队列满,则S=1,rear=front=m循环队列主要有两种基本运算:入队运算和退队运算n 入队运算指在循环队列的队尾加入一个新元素,首先rear=rear+1当rear=m+1时,置rear=1然后将新元素插入到队尾指针指向的位置。当S=1,rear=front说明队列已满,不能进行入队运算,称为“上溢”。n 退队运算指在循环队列的排头位置退出一个元素并赋给指定的变量。首先front=front+1并当front=m+1时,置front=1然后将排头指针指向的

10、元素赋给指定的变量。当循环队列为空S=0,不能进行退队运算,这种情况成为“下溢”。十二.线性单链表的结构及其基本运算1.线性单链表的基本概念一组任意的存储单元存储线性表的数据元素,因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素ai的存储映象,成为结点。它包括两个域:其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域。指针域中存储的信息称做指针或链。N个结点链结成一个链表,即为线性表(a1 a2an)的链式存储结构。又由于

11、此链表的每个结点中只包含一个指针域,故又称线性链表或单链表。有时,我们在单链表的第一个结点之前附设一个结点,称之为头结点,它指向表中第一个结点。头结点的数据域可以不存储任何信息,也可存储如线性表的长度等类的附加信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。在单链表中,取得第I个数据元素必须从头指针出发寻找,因此,单链表是非随机存取的存储结构 链表的形式:单向,双向2.线性单链表的存储结构3带链3.带列的栈与队列栈也是线性表,也可以采用链式存储结构。队列也是线性表,也可以采用链式存储结构。十三.线性链表的基本运算 1.线性链表的插入 2.线性链表的删除十四.双向链表

12、的结构及其基本运算在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前驱。十五.循环链表的结构及其基本运算是另一种形式的链式存储结构,它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。因此,从表中任一结点出发均可找到表中其他结点。十六.树的定义树是一种简朴的非线性结构。树型结构的特点:1.每个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点。2.每一个结点可以有多个后件结点,称为该结点的子结点。没有后件的结点称为叶子结点3.一个结点所拥有的后件个数称为树的结点度4.树的最大层次称为树的深度。十七.二叉树的定义及其基本性质1.二叉树是另一种树型结构

13、,它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。2.二叉树的基本性质在二叉树的第I层上至多有2i-1个结点。深度为k的二叉树至多有2k-1个结点(k=1)在任意一个二叉树中,度为0的结点总是比度为2的结点多一个;具有n 个结点的二叉树,其深度至少为log2n+1。一棵深度为k且有2k-1个结点的二叉树称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。3.满二叉树与完全二叉树满二叉树:除最后一层以外,每一层上的所有结点都有两个子结点。在满二叉树的第K层上有2K-1个结点,且深度为M的满二叉树右2M-1个结点完全二

14、叉树:除最后一层以外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有N个结点的完全二叉树的深度为log2n+1完全二叉树总结点数为N,若N为奇数,则叶子结点数为(N+1)/2 若N为偶数,则叶子结点数为N/24.二叉树的存储结构二叉树通常采用链式存储结构十八.二叉树的遍历就是遵从某种次序,访问二叉树中的所有结点,使得每个结点仅被访问一次。一般先左后右。1.前序遍历DLR 首先访问根结点,然后遍历左子树,最后遍历右子树。2.中序遍历LDR 首先遍历左子树,然后根结点,最后右子树3.后序遍历LRD 首先遍历左子树,然后遍历右子树,最后访问根结点。十九.顺序查找与二分查找1.顺

15、序查找 在两种情况下只能用顺序查找:线性表为无序表、链式存储结构的有序表2.二分查找 只适用于顺序存储的有序表(从小到大)。对于长度为N的有序线性表,在最坏情况下,二分查找只需要比较log2N次,而顺序查找要比较N次。 排序:指将一个无序序列整理成按值非递减顺序排列的有序序列。二十.交换类排序法冒泡排序与快速排序法属于交换类的排序方法1.冒泡排序法 假设线性表的长度为N,则在最坏的情况下,冒跑排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/22.快速排序法二十一.选择类排序法 1.简朴选择排序法 2.堆排序法二十三.插入类排序法 1.简单插入排序法

16、2.希尔排序法最坏情况下 最好情况下 说明交换排序 冒泡排序 n(n-1)/2 最简单的交换排序。在待排序的元素序列基本有序的前提下,效率最高快速排序 n(n-1)/2 O(Nlog2 N) 插入排序 简单插入排序 n(n-1)/2 每个元素距其最终位置不远时适用希尔排序 O(n1.5) 选择排序 简单选择排序 n(n-1)/2 堆排序 O(nlog2n) 适用于较大规模的线性表训练:1.栈和队列的共同特点是(只允许在端点处插入和删除元素)2.假如进栈序列为e1e2e3e4,则可能的出栈序列是(e2e4e3e1)3.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,

17、则出栈序列可能是(DCBEA)4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构)5.下列关于栈的叙述准确的是(D)A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素C.插入删除不需要移动元素 D.所需空间与线性表长度成正比7.用链表表示线性表的长处是(便于插入和删除操作)8.在单链表中,增加头结点的目的是(方便运算的实现)9.循环链表的主要长处是(从表中任一结点出发都能访问到整个链表)10.线性表L(a1a2a3aian),下列说法正确的是(D)A.每个元素都有一个直接前件和

18、直接后件 B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)A.必须是连续的 B.部分地址必须是连续的C.一定是不连续的 D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数目是(有且只有1)14.在深度为5的满二叉树中,叶子结点的个数为(31)15.具有3个结点的二叉树有(5种形态)16.设一棵二叉树中有3个叶子结点,有8个度

19、为1的结点,则该二叉树中总的结点数为(13)17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)20.数据库保护分为:安全性控制、 完整性控制 、并发性控制和数据的恢复。1. 在计算机中,算法是指(解题方案的正确而完整的描述)2.在下列选项中,哪个不是一个算法一般应该具有的基本特征(无穷性)

20、说明:算法的四个基本特征是:可行性、确定性、有穷性和拥有足够的情报。3. 算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环)4.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数)5. 算法的空间复杂度是指(执行过程中所需要的存储空间) 6. 算法分析的目的是(分析算法的效率以求改进) 7. 下列叙述正确的是(C)A算法的执行效率与数据的存储结构无关B算法的空间复杂度是指算法程序中指令(或语句)的条数C算法的有穷性是指算法必须能在执行有限个步骤之后终止D算法的时间复杂度是指执行算法程序所需要的时间8.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,

21、以及(数据的存储结构)9. 数据结构中,与所使用的计算机无关的是数据的(C)A存储结构 B物理结构 C逻辑结构 D物理和存储结构10. 下列叙述中,错误的是(B)A数据的存储结构与数据处理的效率密切相关B数据的存储结构与数据处理的效率无关C数据的存储结构在计算机中所占的空间不一定是连续的D一种数据的逻辑结构可以有多种存储结构11. 数据的存储结构是指(数据的逻辑结构在计算机中的表示)12. 数据的逻辑结构是指(反映数据元素之间逻辑关系的数据结构)13. 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为(线性结构和非线性结构)14. 下列数据结构具有记忆功能的是(C)A队列B

22、循环队列C栈D顺序表15. 下列数据结构中,按先进后出原则组织数据的是(B)A线性链表 B栈 C循环链表 D顺序表16. 递归算法一般需要利用(队列)实现。17. 下列关于栈的叙述中正确的是(D)A在栈中只能插入数据B在栈中只能删除数据C栈是先进先出的线性表 D栈是先进后出的线性表18. 栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是(DCBEA)19.如果进栈序列为e1e2e3e4,则可能的出栈序列是(e2e4e3e1)20. 由两个栈共享一个存储空间的好处是(节省存储空间,降低上溢发生的机率) 21. 应用程序在执行过程中,需要通过打印机输出

23、数据时,一般先形成一个打印作业,将其存放在硬盘中的一个指定(队列)中,当打印机空闲时,就会按先来先服务的方式从中取出待打印的作业进行打印。22.下列关于队列的叙述中正确的是(C)A在队列中只能插入数据 B在队列中只能删除数据 C队列是先进先出的线性表 D队列是先进后出的线性表23.下列叙述中,正确的是(D)A线性链表中的各元素在存储空间中的位置必须是连续的B线性链表中的表头元素一定存储在其他元素的前面 C线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面 D线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的24.下列叙述中正确的

24、是(A)A线性表是线性结构 B栈与队列是非线性结构C线性链表是非线性结构 D二叉树是线性结构25. 线性表L(a1a2a3aian),下列说法正确的是(D)A每个元素都有一个直接前件和直接后件 B线性表中至少要有一个元素C表中诸元素的排列顺序必须是由小到大或由大到小D除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件26.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(连续不连续都可以) 27. 链表不具有的特点是(B)A不必事先估计存储空间 B可随机访问任一元素C插入删除不需要移动元素 D所需空间与线性表长度成正比28. 非空的循环单链表head的尾结点

25、(由p所指向),满足(p-next=head)29.与单向链表相比,双向链表的优点之一是(更轻易访问相邻结点) 30. 在(D)中,只要指出表中任何一个结点的位置,就可以从它出发依次访问到表中其他所有结点。A线性单链表 B双向链表 C线性链表 D循环链表31. 以下数据结构属于非线性数据结构的是(C)A队列 B线性表C二叉树 D栈32.树是结点的集合,它的根结点数目是(有且只有1)33.具有3个结点的二叉树有(5种形态) 34. 在一棵二叉树上第8层的结点数最多是(128) 注:2K-135. 在深度为5的满二叉树中,叶子结点的个数为(16) 注:2n-136. 在深度为5的满二叉树中,共有(

26、31)个结点。 注:2n137.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(350)说明:完全二叉树总结点数为N,若N为奇数,则叶子结点数为(N+1)/2;若N为偶数,则叶子结点数为N/2。38. 设有下列二叉树,对此二叉树中序遍历的结果是(B)AABCDEF BDBEAFCCABDECF DDEBFCA39.已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历序列是(cedba) 40. 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)41.若某二叉树的前序遍历访问顺序是abdgcef

27、h,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)42. 串的长度是(串中所含字符的个数) 43.设有两个串p和q,求q在p中首次出现位置的运算称做(模式匹配)44. N个顶点的连通图中边的条数至少为(N-1)45.N个顶点的强连通图的边数至少有(N)46.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(N)47. 最简单的交换排序方法是(冒泡排序) 48.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为(n(n-1)/2) 49. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是(冒泡排序)50. 在最坏情况下,下列

28、顺序方法中时间复杂度最小的是(堆排序) 51. 希尔排序法属于(插入类排序)52. 堆排序法属于(选择类排序)53. 在下列几种排序方法中,要求内存量最大的是(归并排序) 54. 已知数据表A中每个元素距其最终位置不远,为节省时间,应采用(直接插入排序)55. 算法的基本特征是可行性、确定性、 有穷性 和拥有足够的情报。1.一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。1. 算法的复杂度主要包括时间复杂度和 空间 复杂度。2. 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的空间复杂度和时间复杂度 。3.所谓数据处理是指对数据集合中的各元素以各种方式

29、进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。4.数据结构是指相互有关联的 数据元素 的集合。5.数据结构分为逻辑结构与存储结构,线性链表属于 存储结构 。6.数据结构包括数据的 逻辑 结构和数据的存储结构。7. 数据结构包括数据的逻辑结构、数据的 存储结构 以及对数据的操作运算。8.数据元素之间的任何关系都可以用 前趋和后继 关系来描述。9.数据的逻辑结构有线性结构和非线性结构两大类。10.常用的存储结构有顺序、链接、 索引 等存储结构。11. 顺序存储方法是把逻辑上相邻的结点存储在物理位置 相邻 的存储单元中。12. 栈的基本运算有三种:入栈、退栈与读栈顶元素 。1

30、3. 队列主要有两种基本运算:入队运算与 退队运算 。14. 在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为 可利用栈 。15.栈和队列通常采用的存储结构是 链式存储和顺序存储 。16.当线性表采用顺序存储结构实现存储时,其主要特点是 逻辑结构中相邻的结点在存储结构中仍相邻 。17. 循环队列主要有两种基本运算:入队运算与退队运算。每进行一次入队运算,队尾指针就 进1 。18.当循环队列非空且队尾指针等于对头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 上溢 。19.当循环队列为空时,不能进行退队运算,这种情况称为 下溢 。20. 在一个容量

31、为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有 18 个元素。注:当rearfront时,元素个数rearfront。21. 在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有3 个元素。22.顺序查找一般是指在 线性表 中查找指定的元素。23.在计算机中存放线性表,一种最简单的方法是 顺序存储 。24.在程序设计语言中,通常定义一个 一维数组 来表示线性表的顺序存储空间。25.在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为 指针域 。其中指针用于指向该

32、结点的前一个或后一个结点(即前件或后件)。26.在 线性单链表中 ,每一个结点只有一个指针域,由这个指针只能找到后继结点,但不能找到前驱结点。27. 为了要在线性链表中插入一个新元素,首先要给该元素分配一个 新结点 ,以便用于存储该元素的值。28. 在线性链表中删除一个元素后,只需要改变被删除元素所在结点的前一个结点的 指针域 即可。29. 用链表表示线性表的突出优点是 便于插入和删除操作 。30. 在树形结构中,树根结点没有 前件 。31. 在树结构中,一个结点所拥有的后件个数称为该结点的度。叶子结点的度为 0 。32. 设一棵二叉树中有3个叶子结点,8个度为1的结点,则该二叉树中总的结点数

33、为 13。33. 设一棵完全二叉树共有739个结点,则在该二叉树中有 370 个叶子结点。34. 设一棵完全二叉树共有700个结点,则在该二叉树中有 350 个叶子结点。35. 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、 中序 遍历和后序遍历。36. 若串S=Program,则其子串的数目是 29 。 注:n(n+1)/2+137. 若串S=”MathTypes”,则其子串的数目是 46 。38. 对长度为n的线性表进行插入一个新元素或删除一个元素时,在最坏情况下所需要的比较次数为 n 。39. 在长度为n的有序线性表中进行顺序查找。最坏的情况下,需要的比较

34、次数为 n 。40. 在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 log2n 。41. 长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 n/2 。42. 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 交换排序 和选择排序等。43. 快速排序法可以实现通过一次交换而消除多个 逆序 。44. 快速排序法的要害是对线性表进行 分割 。45. 冒泡排序算法在最好的情况下的元素交换次数为 0 。46. 在最坏情况下,冒泡排序的时间复杂度为 n(n-1) /2 。47. 对于长度为n的线性表,在最坏情况

35、下,快速排序所需要的比较次数为 n(n-1) /2 。48.在最坏情况下,简单插入排序需要比较的次数为 n(n-1) /2 。49.在最坏情况下,希尔排序需要比较的次数为 O(n1.5) 。注:括号里是n的1.5次方。50. 在最坏情况下,简单选择排序需要比较的次数为 n(n-1) /2 。51. 在最坏情况下,堆排序需要比较的次数为 o(nlog2n) 。52.对于输入为N个数进行快速排序算法的平均时间复杂度是 O(Nlog2 N)。第二章 程序设计基础一.程序设计方法与风格当今主导的程序设计风格是“清楚第一,效率第二”的观点。1.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。

36、与程序的效率相比,人们更重视程序的( C )。 A.安全性 B.一致性 C.可理解性D.合理性2.对建立良好的程序设计风格下面的描述正确的是(A )A.程序应简单、清楚、可读性好 B.符号名的命名只要符合语法 C.充分考虑程序的执行效率 D.程序的注释可有可无3. 在设计程序时应采纳的原则之一是( D)。A.不限制GOTO语句的使用B.减少或取消注解行 C.程序越短越好 D.程序结构应有助于读者理解4.程序应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。5.源程序文档化要求程序应加注释,注释一般分为序言性注释和 功能性注释 。6.在编写程序时,需要注重 数据说明 的风格,以

37、便使程序中的数据说明更易理解和维护。7.当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性 程序设计语言的基本成分是数据成分、运算成分、控制成分和(传输成分)。二.结构化程序设计1结构化程序设计的原则8.结构化程序设计方法的主要原则是:自顶向下、逐步求精、模块化、限制使用goto语句 2结构化程序的基本结构与特点9.结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 10.结构化程序设计的3种结构是(顺序结构、选择结构、循环结构)。结构化程序设计方法是程序设计的先进方法和工具。下面为三种基本的控制结构:顺序结构:是一种

38、简单的程序设计,它是最基本,最常用的结构选择结构:又称为分支结构,包括简单选择和多分支选择结构重复结构:又称循环结构,有两类循环语句:当型循环结构(先判断后执行循环体)和直到型循环结构(先执行循环体后判断)按结构化程序设计方法设计出的程序具有两大明显的优点:1、程序易于理解、使用和维护。2、提高了编程工作效率,降低了软件开发成本。3.结构化程序设计原则和方法的应用11.结构化程序设计的主要特点是(每个控制结构只有一个入口和一个出口)12.下列叙述中,不属于结构化程序设计方法的主要原则的是(B)。A.自顶向下 B.由底向上 C.模块化 D.限制使用GOTO语句在结构化程序设计的详细实施中要注重如

39、下要素:使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;选用的控制结构只准许的一个入口和一个出口;程序语句组成轻易识别的块,每块只有一个入口和一人出口;复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;语言中所没有的控制结构,应该采用前后一致的方法来模仿;严格控制GOTO语句的使用。其意思有三:1.用一个非结构化的程序设计语言去实现一个结构化的构造;2.如不使用GOTO语句会使功能模糊;3.在某种可以改善而不是损害程序可读性的情况下。三.面向对象的程序设计1. 关于面向对象方法25.面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个 实体 传统的程序设计

40、方法是面向过程的,其核心方法是以 算法 为核心。面向对象方法和技术以 对象 为核心。对象是由 数据 和 容许的操作 组成的封装体,与客观实体有直接的对应关系。对象之间通过传递 消息 互相联系,以模仿现实世界中不同事物彼此之间的联系。面向对象方法基于构造问题领域的对象模型,以对象为中央构造软件系统。它的基本作法是用 对象 模拟问题领域中的实体,以 对象间的联系 刻画实体间的联系。软件重用 是指在不同的软件开发过程中重复使用相同的或者相似软件元素的过程。 重用是提高软件生产率的最主要的方法。2. 面向对象方法的基本概念(对象、类、消息、继续、多态性)13.面向对象的模型中,最基本的概念是对象和 类

41、 14.类是一个支持集成的抽象数据类型,而对象是类的 实例 对象:面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统一个基本单位,它由一组表示静态特征的属性和它可执行的一组操作组成。(是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。)属性:是对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。操作:描述了对象执行的功能,若通过信息传递,还可为其它对象使用。操作过程对外是封闭的,用户只能看到这一操作实施后的结果,对象的这一特性,即是对象的封装体。15.对象实现了数据和操作的结合,是指对数据和数据的操作进行(封装)。

42、16.封装是一种(信息屏蔽)技术,封装的目的是使对象的定义和实现分离。17.以下不属于对象的基本特点的是(C)。 A.分类性 B.多态性 C.继续性 D.封装性对象有如下一些基本特点即标识惟一性、分类性、多态性、封装性和模块独立性。18.下面关于对象的描述错误的是(A)A.任何对象都必须有继承性B.对象是属性和方法的封装体 C.对象间的通迅靠消息传递 D.操作是对象的动态属性19.信息隐蔽的概念与下述哪能一种概念直接相关(模块独立性)20.可以把具有相同属性的一些不同对象归类,称为 对象类 。类:是具有其同属性、共同方法的对象的集合。所以,类是对象的抽象,这描述了属于该对象类型的所有对象的性质

43、,而一个对象则是其对应类的一个实例。类同对象一样,包括一组数据属性和在数据上的一组合法操作。 对象可以是一个详细的对象也可以是泛指一般的对象,而实例必然是指一个具体的对象。21.在面向对象方法中,一个对象哀求另一对象为其服务的方式是通过发送(消息)消息:面向对象的世界是通过对象与对象间彼此的相合合作来推动的,对象间这种合作需要一个机制协助进行,这样的机制称为“消息”。消息就是一个实例与另一个实例之间传递的信息,它统一了数据流和控制流。一个消息由下述三部分组成:1、接收消息的对象的名称。 2、消息标识符(即消息名)3、零个或多个参数。22.在面向对象方法中,类之间共享属性和操作的机制称为 继承

44、。23.一个类可以从直接或间接的祖先中继承所有属性和方法。采用此方法提高了软件的可重用性继承:是面向对象方法的一个主要特征。继承是使用已有的定义作为基础建立新类的定义技术。也就是说继承是指能够直接获得已有的功能和突出的优点,而不必重复定义它们。继承具有传递性,可分为单继承与多重继承。单继承是指一个类只允许有一人父类,即类等级为树形结构。多重继承是指一个类允许有多个父类。多态性:对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,这种现象即为多态性。多态性机制可提高软件系统的灵活性,可重用性和可扩充性。24.子程序通常分为两类: 过程 和函数,前者是命令的抽象,后者

45、是为了求值。第三章 软件工程重点:需求分析、概要设计、具体设计、软件测试和软件调试的作用、方法等一、 软件工程基本概念 1. 软件是计算机系统中与硬件相互依存的重要部分,包括程序、数据及相关的 文档 。其中,程序 是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。2. 下列叙述中,正确的是(D)。 A.软件就是程序清单 B.软件就是存放在计算机中的文件 C.软件应包括程序清单及运行结果 D.软件包括程序和文档 3. 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)4. 软件工程的出现是由于(软件危机的出现) 5. 开发软件所需高成本和产品的

46、低质量之间有着尖锐的矛盾,这种现象称做(软件危机) 软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所碰到的一系列严峻问题。总之,可以将软件危机归结为成本、质量、生产率等问题。6. 开发大型软件时,产生困难的根本原因是(大型系统的复杂性)。7. 软件危机出现于20世纪60年代末,为了解决软件危机,人们提出了 软件工程学 的原理来设计软件这就是软件工程诞生的基础。8. 下列不属于软件工程的3个要素的是(D)A.工具 B.过程 C.方法 D.环境软件工程过程与软件生命周期9. 软件工程过程是把输入转化为输出的一组彼此相关的 资源 和活动。通常,将软件产品从提出、实现

47、、使用维护到停止使用退役的过程称为 软件生命周期10.软件生命周期中所花费用最多的阶段是(软件维护)11.软件开发的结构化生命周期方法将软件生命周期划分成(定义、开发、运行维护)。 12. 软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。软件工程的目标与原则13. 软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程治理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,主体内容是软件开发方法学。软件工程治理包括:软件管理学、软件工程经济学、软件心理学等内容。14. 软件工程的理论和技术性研究的内容主要包括软件开发技术和(软件工

48、程管理) 15. 软件工程的原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。软件开发工具与软件开发环境16. 开发软件时对提高开发人员工作效率至关重要的是(先进的软件开发工具和环境) 17. 软件开发环境是全面支持软件开发全过程的 软件工具 集合。常用的软件开发方法和技术可以分为三大类:瀑布型、增量型和变换型。瀑布型开发方法将软件生命周期的各项活动规定为按固定顺序连接的若干阶段,强调早期的需求分析和开发的阶段性,强调产品测试;但是不能适应需求的变化。增量型则先建立一个不完全的系统,通过对需求的理解再进一步扩充和完善。例:瀑布模型突出的缺点是不适应(D)的变动A.算法B

49、.平台C)程序语言D.用户需求二、结构化分析方法 需求分析与需求分析方法18. 在软件生产过程中,需求信息的给出是(软件用户)。19. 需求分析中,开发人员要从用户那里了解(软件做什么)。20. 需求分析阶段的任务是确定 (软件系统功能) 21. 需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需的数据模型、功能模型和 控制模型 22. 需求分析阶段的工作:需求获取、需求分析、编写需求规格说明书、需求评审 下列工具中属于需求分析常用工具的是(D)。A)PAD B)PFD C)NS D)DFD结构化分析方法常用的需求分析方法:(1)结构化分析方法。主要包括:面向数据流的结构

50、化分析方法(SA),面向数据结构的Jackson方法(JSD)和面向数据结构的结构化数据系统开发方法(DSSD)(2)面向对象的分析方法(OOA)23. 结构化方法的核心和基础是 结构化程序设计理论 24. 下列不属于结构化分析的常用工具的是(D)。A)数据流图 B)数据字典 C)判定树 D)PAD图25. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是 (B)A)可行性分析 B)需求分析 C)具体设计 D)程序编码 26. 数据流图用于抽象描述一个软件的逻辑模型数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A)。A)控制流 B)加工 C)数

51、据存储 D)源和潭说明:数据流图中的主要图形元素与说明:27. 在数据流图(DFD)中的箭头代表的是(数据流) 28. 在数据流图(DFD)中,带著名字的箭头表示(数据的流向)。29. 在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为 数据字典 软件需求规格说明书30. 软件需求规格说明书 是需求分析阶段的最后结果31. 下列叙述中,不属于软件需求规格说明书的作用的是(D)A.便于用户、开发人员进行理解和交流 B.反映出用户问题的结构,可以作为软件开发工作的基础和依据 C.作为确认测试和验收的依据 D.便于开发人员进行需求分析32. (数据描述)是对软件系统所必须解决的问题做

52、出的详细说明说明:需求规格说明书一般包括以下内容:概述、数据描述、性能描述、功能描述、参考文献目录等。其中概述从系统角度描述软件的目标和任务;功能描述中描述了为解决用户问题所需要的每一项功能的过程细节;性能描述说明系统应达到的性能和应该满足的限制条件、检测的方法和标准。三、 结构化设计方法 软件设计的基本概念33. 在软件开发中,下面任务不属于设计阶段的是(D)A)数据结构设计 B) 给出系统模块结构 C)定义模块算法 D)定义需求并建立系统模型34. 软件设计包括软件的结构、数据、接口和过程设计,其中软件的过程设计是指(系统结构部件转换成软件的过程描述)。说明:结构设计:定义软件系统各主要部

53、件之间的关系;数据设计:将分析时创建的模型转化为数据结构的定义;接口定义:描述软件内部、软件和协作系统之间以及软件与人之间如何通信;过程设计:把系统结构部件转换成软件的过程性描述。35. 下面不属于软件设计原则的是(C)A.抽象 B.模块化 C.自底向上 D.信息隐藏 36. 耦合和内聚是评价模块独立性的两个主要标准,其中 内聚 反映了模块内各成分之间的联系,耦合反映了模块间互相连接的紧密程度。37. 内聚性是信息隐蔽和局部化概念的自然扩展,一个模块的内聚性越强,则该模块的模块独立性越 强 。一个模块与其它模块的耦合性越强,则它的模块独立性越 弱 。 38. 下列叙述中,正确的是(C)A.接口

54、复杂的模块,其耦合程度一定低 B.耦合程度弱的模块,其内聚程度一定低 C.耦合程度弱的模块,其内聚程度一定高 D.以上都不对39.下列选项中,不属于模块间耦合的是(B)。A.数据耦合B.同构耦合C.异构耦D.公用耦合40.软件设计中,有利于提高模块独立性的一个准则是( C)。A.低内聚低耦合 B.低内聚高耦合 C.高内聚低耦合 D.高内聚高耦合概要设计41. 软件的概要 设计又称为总体结构设计,其主要任务是建立软件系统的总体结构,设计数据结构及数据库,编写概要设计文档,概要设计文档评审。42. 在结构化方法中,软件功能分解属于下列软件开发中的阶段是 (C)A.详细设计 B.需求分析 C.总体设

55、计 D.编程调试43. 在概要设计阶段,常用的软件结构设计工具是 结构图 (sc),也称程序结构图。生成的结构图中,带有箭头的连线表示(模块之间的调用关系),矩形表示模块。 44. 在概要设计阶段,一般采用面向数据流的设计方法。数据流的类型有 变换型 和事务型。将变换型映射成结构图称为 变换分析 。将事务型映射成结构图称为 事务分析 。 45. 好的软件设计结构通常 顶层 高 扇出,中间扇出较少,底层 高 扇入。 46. 模块的控制范围包括它本身以及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围。理想的情况是(模块的作用范围

56、应在控制范围内)详细设计47. 详细设计 的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用选定的表达工具表示算法和数据结构的细节。确定怎样来具体实现所要求的系统。 48. 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为(NS图)。49. 详细设计的结果基本决定了最终程序的(质量)。50. 软件设计模块化的目的是 降低复杂性。51. 详细设计的典型语言描述工具是(PDL)结构化分析(需求阶段)的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表结构设计(概要设计阶段)工具是:结构图(SC structure char

57、t)过程设计(详细设计阶段)常见的工具有:程序流程图、NS图、PAD图(问题分析图)和PDL( 过程设计语言)四、软件测试 软件测试的目的52. 在软件测试设计中,软件测试的主要目的是(D)。A.实验性运行软件 B.证实软件正确 C.找出软件中全部错误 D.发现软件错误而执行程序(留意:不是为了证实软件的正确性,也不是为了找出全部错误)软件测试的准则53. 下列叙述中不属于测试的特征的是(C)。A.测试的挑剔性 B.完全测试的不可能性 C.测试的可靠性 D.测试的经济性软件测试技术与方法软件测试方法从是否需要执行被测试软件的角度,可以分为 静态测试 和 动态测试 ;按功能划分为 白盒测试 和

58、黑盒测试 。静态测试包括 代码检查 、 静态结构分析 、 代码质量量度 等白盒测试和黑盒测试都属于 动态测试 白盒测试的主要方法: 逻辑覆盖 、 基本路径测试 等黑盒测试的主要方法: 等价类划分法 、 边界值分析法 、 错误推测法 、 因果图 等54. 下列不属于静态测试方法的是(B)。A.代码检查 B.白盒法 C.静态结构分析 D.代码质量度量55. 在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是(A)。A.路径的集合 B.循环的集合 C.目标的集台 D.地址的集合56. 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是(A)A.黑箱测试法

59、 B.白箱测试法 C.错误推测法 D.安装测试法57. 黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,不考虑程序内部的逻辑结构,在软件接口处进行。常用的黑箱测试有等价分类法、 边界值分析法 、因果图法和错误推测法4种。软件测试的实施58. 软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试 58.检查软件产品是否符合需求定义的过程称为(A)A.确认测试B.集成测试C.验证测试D.验收测试说明:软件的测试过程一般按4个步骤进行: 单元测试:对软件设计的最小单位模块进行正确性检验的测试,发现模块内部可能存在的错误。由于模块通常不是一个独立的程序,不能单

60、独运行,所以经常需要用到模拟环境。可以采用静态测试和动态测试(以白盒测试为主)。集成测试:测试和组装模块的过程,主要是发现与接口有关的错误,依据是概要设计说明书。涉及的内容有:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。通常采用两种方式:非增量方式组装域增量方式组装验收测试(确认测试):验证软件的功能和性能以及其他特性是否满足了需求规格说明书中确定的各种需求,以及软件配置是否完全、正确。采用黑盒测试。系统测试:将软件与硬件、用户、数据等组合,在实际运行环境下对整个系统进行集成测试和确认测试。59. 软件开发离不开系统环境资源的支持其中必要的测试数据属于(D)。A.硬件资源

61、 B.通信资源 C.支持软件 D.辅助资源软件测试过程中,辅助资源包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等。60. 为了提高测试的效率,应该(D)A.随机选取测试数据 B.取一切可能的输入数据作为测试数据 C.在完成编码以后制定软件的测试计划 D.集中对付那些错误群集的程序61. 为了便于对照检查,测试用例应由输入数据和预期的 输出结果 两部分组成。四、程序的调试 软件调试(Debug,即排错)的任务是诊断和改正程序中的错误,与软件测试不同,软件测试是尽可能多地发现软件中的错误。软件测试贯穿整个软件生命期,调试主要在开发阶段。62. 程序调试的基本步骤:错误定位、修改和设计代码以排除错误、进行回归测试防治引进新的错误。63.下列叙述正确的是(D)A.测试和调试工作必须由程序编制者自己完成 B.测试用例和调试用例必须完全一致C.一个程序经调试改正错误后,一般不必再进行测试 D.上述 温馨提示:最好仔细阅读后才下载使用,万分感谢!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!