数据结构,算法,软件工程一些知识点和习题(ByZL)
更新时间:2023-10-31 18:34:01 阅读量: 综合文库 文档下载
- 软件工程数据结构与算法推荐度:
- 相关推荐
第一章 数据结构与算法
一.算法的基本概念
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。 1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。 2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。
3.算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 4.算法设计的要求:准确性、可读性、健壮性、效率与低存储量需求 二.算法的复杂度
1.算法的时间复杂度:指执行算法所需要的计算工作量 2.算法的空间复杂度:执行这个算法所需要的内存空间 三.数据结构的定义
1.数据的逻辑结构:反映数据元素之间的关系的数据元素集合的表示。数据的逻辑结构包括集合、线形结构、树形结构和图形结构四种。
2.数据的存储结构:数据的逻辑结构在计算机存储空间种的存放形式称为数据的存储结构。常用的存储结构有顺序、链接、索引等存储结构。 四.数据结构的图形表示:
在数据结构中,没有前件的结点称为根结点;没有后件的结点成为终端结点。插入和删除是对数据结构的两种基本运算。还有查找、分类、合并、分解、复制和修改等。 五.线性结构和非线性结构
根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构。
线性结构:非空数据结构满意:有且只有一个根结点;每个结点最多有一个前件,最多只有一个后件。非线性结构:假如一个数据结构不是线性结构,称之为非线性结构。 常见的线性结构:线性表、栈、队列 六.线性表的定义
线性表是n 个元素构成的有限序列(A1,A2,A3……)。表中的每一个数据元素,除了第一个以外,有且只有一个前件。除了最后一个以外有且只有一个后件。即线性表是一个空表,或可以表示为(a1a2……an) 其中ai(I=12……n)是属于数据对象的元素,通常也称其为线性表中的一个结点。 非空线性表有如下一些特征:
(1)有且只有一个根结点a1它无前件; (2)有且只有一个终端结点an,它无后件;
(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。线性表中结点的个数n称为线性表的长度。当n=0时称为空表。 七.线性表的顺序存储结构
线性表的顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素。 线性表的顺序存储结构具备如下两个基本特征: 1.线性表中的所有元素所占的存储空间是连续的;
2.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
即线性表逻辑上相邻、物理也相邻,则已知第一个元素首地址和每个元素所占字节数,则可求出任一个元素首地址。
假设线性表的每个元素需占用K个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满意下列关系:
LOC(ai+1)=LOC(ai)+K LOC(ai)=LOC(a1)+(i-1)*K ①
其中,LOC(a1)是线性表的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基地址。 因为在顺序存储结构中,每个数据元素地址可以通过公式①计算得到,所以线性表的顺序存储结构是随机存取的存储结构。
在线性表的顺序存储结构下,可以对线性表做以下运算: 插入、删除、查找、排序、分解、合并、复制、逆转 八.顺序表的插入运算
线性表的插入运算是指在表的第I个位置上,插入一个新结点x,使长度为n的线性表(a1a2 …ai…an)变成长度为n+1的线性表(a1a2…xai…an).
该算法的时间主要花费在循环的结点后移语句上,执行次数是n-I+1。 当I=n+1最好情况,时间复杂度o(1) 当I=1 最坏情况,时间复杂度o(n) 算法的平均时间复杂度为o(n) 九.顺序表的删除运算
线性表的删除运算是指在表的第I个位置上,删除一个新结点x,使长度为n的线性表(a1a2 …ai…an)变成长度为n-1的线性表(a1a2…ai-1ai+1…an).
当I=n时间复杂度o(1)当I=1时间复杂度o(n) 平均时间复杂度为o(n) 十.栈及其基本运算
1.什么是栈? 栈实际上也是一个线性表,只不过是一种特别的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除这一端为栈顶(TOP),另一端为栈底(BOTTOM)。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
假设栈S=(a1a2a3……an),则a1 称为栈底元素,an称为栈顶元素。栈中元素按a1a2a3……an的次序进栈,退栈的第一个元素应该是栈顶元素。即后进先出。 2.栈的顺序存储及其运算
用S(1:M)作为栈的顺序存储空间。M为栈的最大容量。 栈的基本运算有三种:入栈、退栈与读栈顶元素。 入栈运算:在栈顶位置插入一个新元素。
首先将栈顶指针进一(TOP+1),然后将新元素插入到栈顶指针指向的位置。 退栈运算:指取出栈顶元素并赋给一个指定的变量。
首先将栈顶元素赋给一个指定的变量,然后将栈顶指针退一(TOP-1) 读栈顶元素:将栈顶元素赋给一个指定的变量。栈顶指针不会改变。 十一.队列及其基本运算 1.什么是队列
队列是只答应在一端删除,在另一端插入的顺序表,答应删除的一端叫做对头,允许插入的一端叫做对尾。
队列的修改是先进先出。往队尾插入一个元素成为入队运算。从对头删除一个元素称为退队运算。 2.循环队列及其运算
在实际应用中,队列的顺序存储结构一般采用循环队列的形式。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。在循环队列中,,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素。 在实际使用循环队列时,为了能区分队满还是队列空,通常需要增加一个标志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然后将排头指针指向的元素赋给指定的变量。当循环队列为空S=0,不能进行退队运算,这种情况成为“下溢”。
十二.线性单链表的结构及其基本运算 1.线性单链表的基本概念
一组任意的存储单元存储线性表的数据元素,因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素ai的存储映象,成为结点。它包括两个域:其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域。指针域中存储的信息称做指针或链。N个结点链结成一个链表,即为线性表(a1 a2……an)的链式存储结构。又由于此链表的每个结点中只包含一个指针域,故又称线性链表或单链表。
有时,我们在单链表的第一个结点之前附设一个结点,称之为头结点,它指向表中第一个结点。头结点的数据域可以不存储任何信息,也可存储如线性表的长度等类的附加信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。
在单链表中,取得第I个数据元素必须从头指针出发寻找,因此,单链表是非随机存取的存储结构 链表的形式:单向,双向 2.线性单链表的存储结构 3带链
3.带列的栈与队列
栈也是线性表,也可以采用链式存储结构。 队列也是线性表,也可以采用链式存储结构。
十三.线性链表的基本运算 1.线性链表的插入 2.线性链表的删除 十四.双向链表的结构及其基本运算
在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前驱。 十五.循环链表的结构及其基本运算
是另一种形式的链式存储结构,它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。因此,从表中任一结点出发均可找到表中其他结点。 十六.树的定义
树是一种简朴的非线性结构。树型结构的特点:
1.每个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点。 2.每一个结点可以有多个后件结点,称为该结点的子结点。没有后件的结点称为叶子结点 3.一个结点所拥有的后件个数称为树的结点度 4.树的最大层次称为树的深度。 十七.二叉树的定义及其基本性质
1.二叉树是另一种树型结构,它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于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个结点
完全二叉树:除最后一层以外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有N个结点的完全二叉树的深度为[log2n]+1 完全二叉树总结点数为N,
若N为奇数,则叶子结点数为(N+1)/2 若N为偶数,则叶子结点数为N/2 4.二叉树的存储结构
二叉树通常采用链式存储结构 十八.二叉树的遍历
就是遵从某种次序,访问二叉树中的所有结点,使得每个结点仅被访问一次。一般先左后右。 1.前序遍历DLR 首先访问根结点,然后遍历左子树,最后遍历右子树。 2.中序遍历LDR 首先遍历左子树,然后根结点,最后右子树
3.后序遍历LRD 首先遍历左子树,然后遍历右子树,最后访问根结点。 十九.顺序查找与二分查找
1.顺序查找 在两种情况下只能用顺序查找:线性表为无序表、链式存储结构的有序表 2.二分查找 只适用于顺序存储的有序表(从小到大)。
对于长度为N的有序线性表,在最坏情况下,二分查找只需要比较log2N次,而顺序查找要比较N次。 排序:指将一个无序序列整理成按值非递减顺序排列的有序序列。 二十.交换类排序法
冒泡排序与快速排序法属于交换类的排序方法
1.冒泡排序法 假设线性表的长度为N,则在最坏的情况下,冒跑排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2 2.快速排序法
二十一.选择类排序法 1.简朴选择排序法 2.堆排序法 二十三.插入类排序法 1.简单插入排序法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入栈前,栈中元素可以出栈,则出栈序列可能是(DCBEA)
4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 5.下列关于栈的叙述准确的是(D)
A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征 6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要移动元素 D.所需空间与线性表长度成正比 7.用链表表示线性表的长处是(便于插入和删除操作) 8.在单链表中,增加头结点的目的是(方便运算的实现)
9.循环链表的主要长处是(从表中任一结点出发都能访问到整个链表) 10.线性表L=(a1a2a3……ai……an),下列说法正确的是(D) A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素 C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)
A.必须是连续的 B.部分地址必须是连续的C.一定是不连续的 D.连续不连续都可以
12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)
13.树是结点的集合,它的根结点数目是(有且只有1) 14.在深度为5的满二叉树中,叶子结点的个数为(31) 15.具有3个结点的二叉树有(5种形态)
16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为(13) 17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba) 18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)
19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)
20.数据库保护分为:安全性控制、 完整性控制 、并发性控制和数据的恢复。
1. 在计算机中,算法是指(解题方案的正确而完整的描述)
2.在下列选项中,哪个不是一个算法一般应该具有的基本特征(无穷性) 说明:算法的四个基本特征是:可行性、确定性、有穷性和拥有足够的情报。 3. 算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环) 4.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数) 5. 算法的空间复杂度是指(执行过程中所需要的存储空间) 6. 算法分析的目的是(分析算法的效率以求改进) 7. 下列叙述正确的是(C)
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数 C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.算法的时间复杂度是指执行算法程序所需要的时间
8.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构)
9. 数据结构中,与所使用的计算机无关的是数据的(C) A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构 10. 下列叙述中,错误的是(B)
A.数据的存储结构与数据处理的效率密切相关 B.数据的存储结构与数据处理的效率无关
C.数据的存储结构在计算机中所占的空间不一定是连续的 D.一种数据的逻辑结构可以有多种存储结构
11. 数据的存储结构是指(数据的逻辑结构在计算机中的表示) 12. 数据的逻辑结构是指(反映数据元素之间逻辑关系的数据结构)
13. 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为(线性结构和非线性结构)
14. 下列数据结构具有记忆功能的是(C)A.队列B.循环队列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. 应用程序在执行过程中,需要通过打印机输出数据时,一般先形成一个打印作业,将其存放在硬盘中的一个指定(队列)中,当打印机空闲时,就会按先来先服务的方式从中取出待打印的作业进行打印。
22.下列关于队列的叙述中正确的是(C)A.在队列中只能插入数据 B.在队列中只能删除数据 C.队列是先进先出的线性表 D.队列是先进后出的线性表
23.下列叙述中,正确的是(D)A.线性链表中的各元素在存储空间中的位置必须是连续的 B.线性链表中的表头元素一定存储在其他元素的前面 C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面 D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的
24.下列叙述中正确的是(A)A.线性表是线性结构 B.栈与队列是非线性结构 C.线性链表是非线性结构 D.二叉树是线性结构
25. 线性表L=(a1a2a3……ai……an),下列说法正确的是(D)
A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
26.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(连续不连续都可以) 27. 链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要移动元素 D.所需空间与线性表长度成正比
28. 非空的循环单链表head的尾结点(由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-1
35. 在深度为5的满二叉树中,叶子结点的个数为(16) 注:2n-1 36. 在深度为5的满二叉树中,共有(31)个结点。 注:2n-1
37.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(350)
说明:完全二叉树总结点数为N,若N为奇数,则叶子结点数为(N+1)/2;若N为偶数,则叶子结点数为N/2。
38. 设有下列二叉树,对此二叉树中序遍历的结果是(B) A.ABCDEF B.DBEAFC C.ABDECF D.DEBFCA
39.已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历序列是(cedba) 40. 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)
41.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是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. 在最坏情况下,下列顺序方法中时间复杂度最小的是(堆排序) 51. 希尔排序法属于(插入类排序) 52. 堆排序法属于(选择类排序)
53. 在下列几种排序方法中,要求内存量最大的是(归并排序)
54. 已知数据表A中每个元素距其最终位置不远,为节省时间,应采用(直接插入排序) 55. 算法的基本特征是可行性、确定性、 有穷性 和拥有足够的情报。
1.一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。 1. 算法的复杂度主要包括时间复杂度和 空间 复杂度。
2. 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的空间复杂度和时间复杂度 。 3.所谓数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。
4.数据结构是指相互有关联的 数据元素 的集合。
5.数据结构分为逻辑结构与存储结构,线性链表属于 存储结构 。 6.数据结构包括数据的 逻辑 结构和数据的存储结构。
7. 数据结构包括数据的逻辑结构、数据的 存储结构 以及对数据的操作运算。 8.数据元素之间的任何关系都可以用 前趋和后继 关系来描述。 9.数据的逻辑结构有线性结构和非线性结构两大类。 10.常用的存储结构有顺序、链接、 索引 等存储结构。
11. 顺序存储方法是把逻辑上相邻的结点存储在物理位置 相邻 的存储单元中。 12. 栈的基本运算有三种:入栈、退栈与读栈顶元素 。 13. 队列主要有两种基本运算:入队运算与 退队运算 。
14. 在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为 可利用栈 。
15.栈和队列通常采用的存储结构是 链式存储和顺序存储 。
16.当线性表采用顺序存储结构实现存储时,其主要特点是 逻辑结构中相邻的结点在存储结构中仍相邻 。
17. 循环队列主要有两种基本运算:入队运算与退队运算。每进行一次入队运算,队尾指针就 进1 。 18.当循环队列非空且队尾指针等于对头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 上溢 。
19.当循环队列为空时,不能进行退队运算,这种情况称为 下溢 。
20. 在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有 18 个元素。注:当rearfront时,元素个数=rear-front。
21. 在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有3 个元素。
22.顺序查找一般是指在 线性表 中查找指定的元素。
23.在计算机中存放线性表,一种最简单的方法是 顺序存储 。
24.在程序设计语言中,通常定义一个 一维数组 来表示线性表的顺序存储空间。
25.在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为 指针域 。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
26.在 线性单链表中 ,每一个结点只有一个指针域,由这个指针只能找到后继结点,但不能找到前驱结点。
27. 为了要在线性链表中插入一个新元素,首先要给该元素分配一个 新结点 ,以便用于存储该元素的值。
28. 在线性链表中删除一个元素后,只需要改变被删除元素所在结点的前一个结点的 指针域 即可。 29. 用链表表示线性表的突出优点是 便于插入和删除操作 。 30. 在树形结构中,树根结点没有 前件 。
31. 在树结构中,一个结点所拥有的后件个数称为该结点的度。叶子结点的度为 0 。 32. 设一棵二叉树中有3个叶子结点,8个度为1的结点,则该二叉树中总的结点数为 13。 33. 设一棵完全二叉树共有739个结点,则在该二叉树中有 370 个叶子结点。 34. 设一棵完全二叉树共有700个结点,则在该二叉树中有 350 个叶子结点。
35. 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、 中序 遍历和后序遍历。
36. 若串S=\,则其子串的数目是 29 。 注:n(n+1)/2+1 37. 若串S=”MathTypes”,则其子串的数目是 46 。
38. 对长度为n的线性表进行插入一个新元素或删除一个元素时,在最坏情况下所需要的比较次数为 n 。
39. 在长度为n的有序线性表中进行顺序查找。最坏的情况下,需要的比较次数为 n 。 40. 在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 log2n 。 41. 长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 n/2 。
42. 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 交换排序 和选择排序等。
43. 快速排序法可以实现通过一次交换而消除多个 逆序 。 44. 快速排序法的要害是对线性表进行 分割 。
45. 冒泡排序算法在最好的情况下的元素交换次数为 0 。 46. 在最坏情况下,冒泡排序的时间复杂度为 n(n-1) /2 。
47. 对于长度为n的线性表,在最坏情况下,快速排序所需要的比较次数为 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.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的( C )。 A.安全性 B.一致性 C.可理解性D.合理性 2.对建立良好的程序设计风格下面的描述正确的是(A )
A.程序应简单、清楚、可读性好 B.符号名的命名只要符合语法 C.充分考虑程序的执行效率 D.程序的注释可有可无
3. 在设计程序时.应采纳的原则之一是( D)。A.不限制GOTO语句的使用 B.减少或取消注解行 C.程序越短越好 D.程序结构应有助于读者理解
4.程序应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。 5.源程序文档化要求程序应加注释,注释一般分为序言性注释和 功能性注释 。
6.在编写程序时,需要注重 数据说明 的风格,以便使程序中的数据说明更易理解和维护。 7.当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性 程序设计语言的基本成分是数据成分、运算成分、控制成分和(传输成分)。 二.结构化程序设计 1结构化程序设计的原则
8.结构化程序设计方法的主要原则是:自顶向下、逐步求精、模块化、限制使用goto语句 2结构化程序的基本结构与特点
9.结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性
10.结构化程序设计的3种结构是(顺序结构、选择结构、循环结构)。
结构化程序设计方法是程序设计的先进方法和工具。下面为三种基本的控制结构: 顺序结构:是一种简单的程序设计,它是最基本,最常用的结构 选择结构:又称为分支结构,包括简单选择和多分支选择结构
重复结构:又称循环结构,有两类循环语句:当型循环结构(先判断后执行循环体)和直到型循环结构(先执行循环体后判断)
按结构化程序设计方法设计出的程序具有两大明显的优点:1、程序易于理解、使用和维护。2、提高了编程工作效率,降低了软件开发成本。 3.结构化程序设计原则和方法的应用
11.结构化程序设计的主要特点是(每个控制结构只有一个入口和一个出口) 12.下列叙述中,不属于结构化程序设计方法的主要原则的是(B)。 A.自顶向下 B.由底向上 C.模块化 D.限制使用GOTO语句 在结构化程序设计的详细实施中要注重如下要素:
使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;选用的控制结构只
准许的一个入口和一个出口;程序语句组成轻易识别的块,每块只有一个入口和一人出口;复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;语言中所没有的控制结构,应该采用前后一致的方法来模仿;严格控制GOTO语句的使用。其意思有三:1.用一个非结构化的程序设计语言去实现一个结构化的构造;2.如不使用GOTO语句会使功能模糊;3.在某种可以改善而不是损害程序可读性的情况下。
三.面向对象的程序设计 1. 关于面向对象方法
25.面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个 实体
传统的程序设计方法是面向过程的,其核心方法是以 算法 为核心。面向对象方法和技术以 对象 为核心。对象是由 数据 和 容许的操作 组成的封装体,与客观实体有直接的对应关系。对象之间通过传递 消息 互相联系,以模仿现实世界中不同事物彼此之间的联系。
面向对象方法基于构造问题领域的对象模型,以对象为中央构造软件系统。它的基本作法是用 对象 模拟问题领域中的实体,以 对象间的联系 刻画实体间的联系。
软件重用 是指在不同的软件开发过程中重复使用相同的或者相似软件元素的过程。 重用是提高软件生产率的最主要的方法。
2. 面向对象方法的基本概念(对象、类、消息、继续、多态性) 13.面向对象的模型中,最基本的概念是对象和 类
14.类是一个支持集成的抽象数据类型,而对象是类的 实例
对象:面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统一个基本单位,它由一组表示静态特征的属性和它可执行的一组操作组成。(是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。)
属性:是对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。 操作:描述了对象执行的功能,若通过信息传递,还可为其它对象使用。操作过程对外是封闭的,用户只能看到这一操作实施后的结果,对象的这一特性,即是对象的封装体。 15.对象实现了数据和操作的结合,是指对数据和数据的操作进行(封装)。 16.封装是一种(信息屏蔽)技术,封装的目的是使对象的定义和实现分离。 17.以下不属于对象的基本特点的是(C)。 A.分类性 B.多态性 C.继续性 D.封装性 对象有如下一些基本特点.即标识惟一性、分类性、多态性、封装性和模块独立性。
18.下面关于对象的描述错误的是(A)A.任何对象都必须有继承性B.对象是属性和方法的封装体 C.对象间的通迅靠消息传递 D.操作是对象的动态属性
19.信息隐蔽的概念与下述哪能一种概念直接相关(模块独立性) 20.可以把具有相同属性的一些不同对象归类,称为 对象类 。
类:是具有其同属性、共同方法的对象的集合。所以,类是对象的抽象,这描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。类同对象一样,包括一组数据属性和在数据上的一组合法操作。 对象可以是一个详细的对象也可以是泛指一般的对象,而实例必然是指一个具体的对象。
21.在面向对象方法中,一个对象哀求另一对象为其服务的方式是通过发送(消息)
消息:面向对象的世界是通过对象与对象间彼此的相合合作来推动的,对象间这种合作需要一个机制协助进行,这样的机制称为“消息”。消息就是一个实例与另一个实例之间传递的信息,它统一了数据流和控制流。一个消息由下述三部分组成:1、接收消息的对象的名称。 2、消息标识符(即消息名)3、零个或多个参数。
22.在面向对象方法中,类之间共享属性和操作的机制称为 继承 。
23.一个类可以从直接或间接的祖先中继承所有属性和方法。采用此方法提高了软件的可重用性 继承:是面向对象方法的一个主要特征。继承是使用已有的定义作为基础建立新类的定义技术。也就
正在阅读:
数据结构,算法,软件工程一些知识点和习题(ByZL)10-31
2017庆七一主持词02-23
三年级下册数学思维训练题及答案汇总10-28
永宁县有机大米产业发展的SWOT分析08-24
白朝小学七年级数学上册期末监测题12-21
新型农村社区党建工作模式探究11-16
融合新闻课程教学大纲04-20
三菱触摸屏语言切换画面制作06-03
记一场乒乓球运动会作文500字06-15
施工工艺大全——墙面柱面贴瓷砖05-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 软件工程
- 知识点
- 习题
- 算法
- 一些
- ByZL
- 从统战视角看不一样的长征
- Unit1 The lion and the mouse 试卷
- 高级技师理论知识试题 判断题
- 遂宁观音湖下穿隧道建设项目 - 图文
- 联谊活动策划 - 图文
- 蛙泳的动作要领及口诀
- 基于单片机的气压检测装置的设计
- 中国电信IPTV机顶盒分公司人员培训
- 18套试卷合集山东省淄博周村区五校联考2019年中考物理二模物理试卷及答案 - 图文
- 轨道车辆和大型养路机械产品维修许可实施细则
- 2012春五年级(三)8k
- 汽车租赁系统论文完整格式
- 旅游线路设计作业
- 小学四年级语文阅读训练题(附答案)
- 板料成形有限元模拟系统前处理模块中关键技术的研究
- 南大远程教育大学语文考试
- 大班个别化学习材料投放的有效性研究
- Android系统移植技术详解
- 王虎应网络卦例2
- 2019版高考语文一轮复习好题狂练:专题五 扩展语句、压缩语段 5