《公共基础知识》学习指导及训练.docx
《《公共基础知识》学习指导及训练.docx》由会员分享,可在线阅读,更多相关《《公共基础知识》学习指导及训练.docx(53页珍藏版)》请在冰豆网上搜索。
《公共基础知识》学习指导及训练
●知识整理编辑:
★职位:
の时间:
☎邮箱:
chichayong@
第一章数据结构与算法
知识点
所占分值
考核几率
算法
2~4分
50%
数据结构的基本概念
2~4分
50%
线性表及其顺序存储结构
1~2分
50%
线性链表
1~2分
20%
栈及其基本运算
2~4分
100%
队列及其基本运算
树与二叉树
2~6
100%
查找于排序技术
2~4
80%
第二章程序设计基础
知识点
所占分值
考核几率
程序设计方法与风格
0~2分
40%
结构化程序设计
0~2分
20%
面向对象程序设计
0~2分
70%
第三章软件工程基础
知识点
所占分值
考核几率
软件工程基本概念
2~4
80%
软件分析及其方法
0~2
40%
软件设计及其方法
2~4
60%
软件测试
2~4
80%
程序的调试
0~2
80%
第四章数据库设计基础
知识点
所占分值
考核几率
数据库系统的基本概念
2~4
100%
数据模型
2~6
90%
关系代数
0~2
50%
数据库库设计与管理
2~4
40%
【考点1】算法的基本概念
⒈算法:
是指一组有穷的指令集,是解题方案的准确而完整的描述。
算法不等于程序,也不等于计算方法。
⒉算法的基本特征:
①确定性,算法中每一步骤都必须有明确定义,不允许有多义性;
②有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;
③可行性,算法原则上能够精确地执行;
④拥有足够的情报。
⒊算法的组成要素:
一个算法由数据对象的运算和操作以及其控制结构这两部分组成。
⒋算法的基本运算和操作:
算术运算,逻辑运算,关系运算,数据传输。
⒌算法的基本控制结构:
顺序,选择,循环。
⒍算法基本设计方法:
列举法、归纳法、递推、递归、减半递推技术、回溯法。
【考点2】算法的复杂度
⒈算法效率的度量——算法的复杂度:
时间复杂度和空间复杂度。
⒉算法时间复杂度:
指执行算法所需要的计算工作量。
通常,一个算法所用的时间包括编译时间和运行时间。
⒊算法空间复杂度:
指执行这个算法所需要的内存空间。
包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。
⒋空间复杂度和时间复杂度并不相关。
【考点3】数据结构的基本概念
⒈数据:
数据是客观事物的符号表示,是能输入到计算机中并被计算程序识别和处理的符号的总称,如文档,声音,视频等。
⒉数据元素:
数据元素是数据的基本单位。
⒊数据对象:
数据对象是性质相同的数据元素的集合。
⒋数据结构:
是指由某一数据对象中所有数据成员之间的关系组成的集合。
【考点4】逻辑结构和存储结构
⒈数据结构可分为数据的逻辑结构和存储结构。
⒉数据的逻辑结构是对数据元素之间的逻辑关系的描述,与数据的存储无关,是面向问题的,是独立于计算机的。
它包括数据对象和数据对象之间的关系。
⒊数据的存储结构也称为数据的物理结构,是数据在计算机中的存放的方式,是面向计算机的,它包括数据元素的存储方式和关系的存储方式。
⒋数据结构和逻辑结构的关系:
一种数据的逻辑结构可以表示成多种存储结构即数据的逻辑结构和存储结构不一定一一对应。
⒌常见的存储结构有:
顺序,链接,索引等。
采用不同的存储结构其数据处理的效率是不同的。
【考点5】线性结构和非线性结构
⒈线性结构的条件(一个非空数据结构):
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
⒉非线性结构:
不满足线性结构条件的数据结构。
⒊栈、队列、双向链表是线性结构,树、二叉树为非线性结构。
⒋线性结构和非线性结构都可以是空的数据结构;线性结构又称线性表。
【考点6】线性表及其顺序存储结构
⒈线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
⒉在复杂线性表中,由若干项数据元素组成的数据元素称为记录;由多个记录构成的线性表称为文件。
⒊非空线性表的结构特征:
(1)有且只有一个根结点a1,它无前件;
(2)有且只有一个终端结点an,它无后件;
(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。
⒋结点个数n称为线性表的长度,当n=0时,称为空表。
⒌线性表的顺序存储结构具有以下两个基本特点:
(1)线性表中所有元素所占的存储空间是连续的;
(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
⒍元素ai的存储地址为:
ADR(ai)=ADR(a1)+(i-1)*k,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。
⒎顺序表的运算:
查找、插入、删除。
【考点7】线性链表
⒈线性链表是线性表的链式存储结构,数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。
结点由两部分组成:
(1)用于存储数据元素值,称为数据域;
(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。
⒉在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
链式存储方式既可用于表示线性结构,也可用于表示非线性结构。
线性单链表中,HEAD称为头指针,HEAD=NULL(或0)称为空表。
双向链表有两个指针:
左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。
循环链表:
循环链表与单链表的不同的是它的最后一个结点的指针域存放的事指向第一个结点的指针而单链表存放的是空指针。
⒊线性链表的基本运算:
查找、插入、删除。
【考点8】栈
⒈栈的基本概念
栈是一种特殊的线性表,只允许在表的一端进行插入和删除的线性表;插入,删除的一端为栈顶,另一端为栈底;当表中没有元素时为空栈。
栈是一种后进先出(或先进后出LastInFirstOut)的线性表。
栈具有记忆功能。
栈的实例:
火车调度,子弹夹。
⒉栈的存储结构
顺序存储结构:
用一组地址连续的存储单元即一维数组来存储;
链式存储:
用线性链表来存储;
⒊栈的基本运算
(1)入栈运算,在栈顶位置插入元素;
(2)退栈运算,删除元素(取出栈顶元素并赋给一个指定的变量);
(3)读栈顶元素,将栈顶元素赋给一个指定的变量,此时指针无变化。
当栈顶元素为0时,说明栈空,读不到栈顶元素。
⒋栈支持子程序调用。
⒌栈底指针指向栈空间的栈栈中元素个数等于栈底指针—栈顶指针+1
【考点9】队列
1.队列的基本概念
队列是一种特殊的线性表,只允许在表的一端插入,在另一端删除,允许插入的一端是队尾(rear),允许删除的一端为队头(front);当表中没有元素是空队列;队列是一种‘先进先出’的线性表。
(FIFO)
⒉队列的存储结构
顺序存储:
一维数组。
链式存储:
线性链表。
3、队列的运算:
(1)入队运算:
从队尾插入一个元素;(当不能进行入队运算称为上溢)
(2)退队运算:
从队头删除一个元素。
(当不能进行退队运算称为下溢)
⒋队列的顺序存储结构一般采用循环队列的形式。
循环队列s=0表示队列为空;s=1且front=rear表示队满。
⒌计算循环队列的元素个数:
“尾指针减头指针”,若为负数,再加其容量即可。
【考点10】树的基本概念
⒈树是一种非线性结构,是n个结点的有限集。
当n=0时为空树,n>0时为非空树。
结点的度:
结点所拥有的子树的个数。
⒉叶子结点:
度为0的结点,即没有后件的节点(可以多个)。
⒊分支结点:
除叶子结点以外的结点。
⒋结点的层次:
根结点在第一层,同一层上左右结点的子结点在下一层。
⒌树的深度:
所处层次最大的那个结点的层次。
⒍树的度:
树中所有结点的度的最大值。
⒎父节点:
每个节点只有一个前件。
⒏根节点:
没有前件的节点(只有一个)。
⒐子节点:
每个节点可以有多个后件。
⒑节点的度:
一个节点所拥有后件的个数。
⒒叶子节点没有子树。
【考点11】二叉树及其基本性质
⒈二叉树的概念
二叉树是一种特殊的树形结构,每个结点最多只有两棵子树,且有左右之分不能互换,因此,二叉树有五种不同的形态,见教材34页。
⒉二叉树的性质
性质1在二叉树的第k层上,最多有2k-1(k≥1)个结点。
性质2深度为m的二叉树最多有2m-1个结点。
性质3在任意一棵二叉树中,度为0的结点(叶子结点)总是比度为2的结点多一个。
性质4具有n个结点的二叉树,其深度不小于[log2n]+1,其中[log2n]表示为log2n的整数部分。
⒊二叉树的存储结构:
在计算机中,二叉树通常采用链式存储结构。
详见教材第36~37页。
【考点12】满二叉树与完全二叉树
⒈满二叉树:
除最后一层外,每一层上的所有结点都有两个子结点。
在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
⒉完全二叉树是指这样的二叉树:
除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
⒊满二叉树是完全二叉树,而完全二叉树一般不是满二叉树。
【考点13】完全二叉树的性质
性质1具有n个结点的完全二叉树的深度为[log2n]+1。
性质2完全二叉树中度为1的结点数为0或1。
【考点14】二叉树的遍历
前序遍历:
先访问根结点、然后遍历左子树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
(根左右)
前序遍历图5可得:
ABCDFHEG。
中序遍历:
先遍历左子树、然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
(左根右)
中序遍历图5可得:
BAFHDCGE。
后序遍历:
先遍历左子树、然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。
(左右根)
后序遍历图5可得:
BHFDGECA。
【考点15】顺序查找
⒈查找技术分为顺序查找和二分法查找。
⒉顺序查找是从表的一端开始,依次扫描表中的各个元素,并与所要查找的数进行比较。
在下列两种情况下也只能采用顺序查找:
(1)如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找。
(2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。
【考点16】二分法查找
⒈二分查找的条件:
(1)用顺序存储结构
(2)线性表是有序表。
⒉查找的步骤:
详见教材第39页。
⒊对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次,而顺序查找需要比较n次。
【考点17】排序技术
1、交换排序
(1)冒泡排序法,在最坏的情况下,冒泡排序需要比较次数为n(n-1)/2。
(2)快速排序法,在最坏的情况下,快速排序需要比较次数为n(n-1)/2。
2、插入类排序法:
(1)简单插入排序法,最坏情况需要n(n-1)/2次比较;
(2)希尔排序法,最坏情况需要O(n1.5)次比较。
(大写O是算法复杂度的表示方法)
3、选择类排序法:
(1)简单选择排序法,最坏情况需要n(n-1)/2次比较;
(2)堆排序法,最坏情况需要O(nlog2n)次比较。
相比以上几种(除希尔排序法外),堆排序法的时间复杂度最小。
☺数据结构与算法典题训练
1、下面叙述正确的是______。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上三种描述都不对
2、以下数据结构中不属于线性数据结构的是______。
A.队列B.线性表C.二叉树D.栈
3、在一棵二叉树上第5层的结点数最多是______。
A.8B.16C.32D.15
4、算法的时间复杂度是指______。
A.执行算法程序所需要的时间B.算法程序的长度
C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数
5、下列叙述中正确的是______。
A.线性表是线性结构B.栈与队列是非线性结构
C.线性链表是非线性结构D.二叉树是线性结构
6、设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。
A.349B.350C.255D.351
7、算法的空间复杂度是指______。
A.算法程序的长度B.算法程序中的指令条数
C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间
8、下列关于栈的叙述中正确的是______。
A.在栈中只能插入数据B.在栈中只能删除数据
C.栈是先进先出的线性表D.栈是先进后出的线性表
9、在深度为5的满二叉树中,叶子结点的个数为______。
A.32B.31C.16D.15
10、在下列选项中,哪个不是一个算法一般应该具有的基本特征______。
A.确定性B.可行性C.无穷性D.拥有足够的情报
11、希尔排序法属于哪一种类型的排序法______。
A.交换类排序法B.插入类排序法C.选择类排序法D.建堆排序法
12、下列关于队列的叙述中正确的是______。
A.在队列中只能插入数据B.在队列中只能删除数据
C.队列是先进先出的线性表D.队列是先进后出的线性表
13、对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。
A.N+1B.NC.(N+1)/2D.N/2
14、在计算机中,算法是指______。
A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法
15、栈和队列的共同点是______。
A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点
16、已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。
A.cedbaB.acbedC.decabD.deabc
17、在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
18、数据结构中,与所使用的计算机无关的是数据的______。
A.存储结构B.物理结构C.逻辑结构D.物理和存储结构
19、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。
A.ABCEDB.DBCEAC.CDABED.DCBEA
20、线性表的顺序存储结构和线性表的链式存储结构分别是______。
A.顺序存取的存储结构、顺序存取的存储结构
B.随机存取的存储结构、顺序存取的存储结构
C.随机存取的存储结构、随机存取的存储结构
D.任意存取的存储结构、任意存取的存储结构
21、在单链表中,增加头结点的目的是______。
A.方便运算的实现B.使单链表至少有一个结点
C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现
22、数据处理的最小单位是______。
A.数据B.数据元素C.数据项D.数据结构
23、算法分析的目的是______。
A.找出数据结构的合理性B.找出算法中输入和输出之间的关系
C.分析算法的易懂性和可靠性D.分析算法的效率以求改进
24、已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是______。
A.堆排序B.直接插入排序C.快速排序D.直接选择排序
25、用链表表示线性表的优点是______。
A.便于插入和删除操作B.数据元素的物理顺序与逻辑顺序相同
C.花费的存储空间较顺序存储少D.便于随机存取
26、算法的复杂度主要包括______复杂度和空间复杂度。
27、在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:
前序遍历、______遍历和后序遍历。
28、设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点。
29、在最坏情况下,冒泡排序的时间复杂度为______。
30、栈的基本运算有三种:
入栈、退栈和______。
31、实现算法所需的存储单元多少和算法的工作量大小分别称为算法的______。
32、算法的基本特征是可行性、确定性、______和拥有足够的情报。
33、在最坏情况下,堆排序需要比较的次数为______。
34、若串s="Program",则其子串的数目是______。
▲答案与解析
1、[答案]C[考点]程序设计基础[评析]时间复杂度:
在运行算法时所耗费的时间为f(n)(即n的函数)。
空间复杂度:
实现算法所占用的空间为g(n)(也为n的函数)。
A应为有关。
2、[答案]C[考点]数据结构与算法[评析]一棵二叉树的一个结点下面可以有2个子结点,故不是线性结构(通俗地理解,看是否能排成条直线)。
A是先进先出的线性表;B是宏观概念,包括顺序表、链表、堆栈、队列…;D是先进后出的线性表。
3、[答案]B[考点]数据结构与算法[评析]依次从上到下,可得出:
第1层结点数为1;第2层结点数为2*1=2;第3层结点数为2*2=4;第n层结点数为2的n-1次幂,如图所示
4、[答案]C[考点]数据结构与算法[评析]算法的复杂度分时间复杂度和空间复杂度。
时间复杂度:
在运行算法时所耗费的时间为f(n)(即n的函数)。
空间复杂度:
实现算法所占用的空间为g(n)(也为n的函数)。
称O(f(n))和O(g(n))为该算法的复杂度。
简单的例子比如常见的顺序结构时间复杂度为O
(1),1层循环里面次数为n,时间复杂度就是O(n),2层循环fori=1ton,forj=1ton算法时间复杂度为O(n2)(里面为n的平方),复杂度主要用于算法的效率比较与优化,比如排序,查找…
5、[答案]A[考点]数据结构与算法[评析]一棵二叉树的一个结点下面可以有2个子结点,故不是线性结构(通俗地理解,看是否能排成条直线)。
6、[答案]B[考点]数据结构与算法[评析]完全二叉树:
若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点(叶结点)都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。
比如图:
完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699是奇数,叶结点层以上的所有结点数为保证是奇数,则叶结点数必是偶数,这样我们可以立即选出答案为B!
如果完全二叉树的叶结点都排满了,则是满二叉树,易得满二叉树的叶结点数是其以上所有层结点数+1比如图:
此题的其实是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。
7、[答案]D[考点]程序设计基础[评析]时间复杂度:
在运行算法时所耗费的时间为f(n)(即n的函数)。
空间复杂度:
实现算法所占用的空间为g(n)(也为n的函数)。
算法为什么会占用存储存空间?
主要是内存空间,因为算法中的变量、地址等等通常保存在内存中(如果在虚存、缓存,甚至已在CPU中运行,也算占用了存储空间)。
8、[答案]D[考点]数据结构与算法[评析]此题为基本概念,必记,注意:
队列是先进先出的线性表,结合起来记不要搞混。
9、[答案]C[考点]数据结构与算法[评析]首先搞清楚满二叉树与完全二叉树之间的区别,前面已解释过。
依次从上到下,可得出:
第1层结点数为1;第2层结点数为2*1=2;第3层结点数为2*2=4;第n层结点数为2的n-1次幂,如图所示
10、[答案]C[考点]程序设计基础[评析]算法具有确定性、可行性,并拥有足够的情报。
11、[答案]B[考点]数据结构与算法[评析]Shell排序法输入:
数组名称(也就是数组首地址)、数组中元素个数。
思想为:
在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。
如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。
12、[答案]C[考点]数据构与算法[评析]队列是先进先出的,栈是先进后出的,2者的区别一定要搞清楚。
13、[答案]B[考点]数据结构与算法[评析]很简单,我们的二级程序设计语言书中都有此算法,另外还要掌握二分法查找,这也是我们二级中常考的。
那么二分法最坏的情况为多少次呢?
>log2n的最小整数值。
比如n为4,最坏的情况要比较3次;n为18,最坏的情况要比较5次。
二分法适用于已排序的顺序表。
14、[答案]C[考点]数据结构与算法[评析]A、B、D都过于片面,此题直接选答案也很简单。
15、[答案]C[考点]数据结构与算法[评析]栈是先进后出的,队列是先进先出的,共同点是只允许在端点处插入和删除元素。
栈都是在一端进与出,而队列是在一端进在另一端出。
16、[答案]A[考点]数据结构与算法[评析]后序又叫后根,一次递归过程是先左再右最后根。
17、[答案]D[考点]数据结构与算法[分析]我们对比一个排序方法的优越性有"平均时间"、"最坏情况时间"和"辅助空间"。
其中辅助空间一般是排序中需要额外的内存开销,这些内存开销一般据一些如中间变量(暂存变量)、比较与交换等等来决定。
插入排序和选择排序的辅助空间都是o
(1),快速排序是o(nlog2n),归并排序是o(n)。
可知归并排序要求内存量最大,我们也可以从其变量及循环个数也以看出归并排序要求内存量最大。
18、[答案]C[考点]数据结构与算法[评析]通过前面的一些题的解释,相信此题对大家也很简单了。
逻辑结构更接近人的思想,比如栈的先进后出的结构,这是逻辑结构,如果研究到了栈在内存中的结构,如地址、地址里的内容等等,这就是物理结构了,我们一般无须过于深入底层地钻研。
19、[答案]D[考点]数据结构与算法[评析]栈是先进后出的,因为在E放入前,A、B、C、D已经依次放进栈里了,故这四个元素出栈的顺序只能是D、C、B、A,E可是其中排序的任何位置,答案只有D符合了。
20、[答案]B[考点]数据结构与算法[评析]顺序存储结构可以以数组为例子,它在内存中的一片连续的储存空间,从第一个元素到最后一个元素,只要根据下标就可以访问。
二级的各种程序设计语言都有。
链式存储结构可以以C/C++语言中的链表为例,各个链结点无须存放在一片连续的内存空间,而只需要指针变量指过来指过去,实现随机存取。
21、[答案]A[考点]数据结构与算法。
22、[答案]C[考点]数据结构与算法[评析]。
23、[答案]D[考点]数据结构与算法[评析]为什么要讲各种各样的算法,只要达到功能不就行了吗?
有些场合为了让程序效率更高,必须改进算法。
我们二级熟悉的算法改进,如二分法查找比顺序查找更快,仔细分析这些算法以求效率改进。
再比如选择排序、插值排序、冒泡排序,哪个效率高?
我们分析算法,可知如果序列初始比较有序的情况下,冒泡法效率最高。
各种例子都说明D是正确答案。
24、[答案]B[考点]数据结构与算法[评析]做此题时,我们可以回想一下每个选项的排序原理。
堆排序是边建堆边排序的过程,而建堆排序时的效率元素距其最终位置的远近关系不大。
插入排序