数据结构算法软件工程一些知识点和知识题.doc
《数据结构算法软件工程一些知识点和知识题.doc》由会员分享,可在线阅读,更多相关《数据结构算法软件工程一些知识点和知识题.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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)=LOC(a1)+(i-1)*K 其中,LOC
5、(a1)是线性表的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基地址。因为在顺序存储结构中,每个数据元素地址可以通过公式计算得到,所以线性表的顺序存储结构是随机存取的存储结构。在线性表的顺序存储结构下,可以对线性表做以下运算:插入、删除、查找、排序、分解、合并、复制、逆转八.顺序表的插入运算线性表的插入运算是指在表的第I个位置上,插入一个新结点x,使长度为n的线性表(a1a2 aian)变成长度为n+1的线性表(a1a2xaian).该算法的时间主要花费在循环的结点后移语句上,执行次数是n-I+1。当I=n+1最好情况,时间复杂度o(1) 当I=1 最坏情况,时间复杂度o(n)算法
6、的平均时间复杂度为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),然后将新元素插入到栈顶指针指向的位置。退栈运算:指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素赋给一个指定的变量,然后将栈顶指针退一(TOP-1)读栈顶元素:将栈顶元素赋给一个指定的变量。栈顶指针不会改变。十一.队列及其基本运算1
8、.什么是队列队列是只答应在一端删除,在另一端插入的顺序表,答应删除的一端叫做对头,允许插入的一端叫做对尾。队列的修改是先进先出。往队尾插入一个元素成为入队运算。从对头删除一个元素称为退队运算。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然后将排头指针指向的元素赋给指定的变量。当循环队列为空S=0,不能进行退队运算,
10、这种情况成为“下溢”。十二.线性单链表的结构及其基本运算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.简单插入排序法2.希尔排序法最坏情况下 最好情况下 说明交换排序 冒泡排序
16、 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.栈通常采用的两种存储结构是
17、(线性存储结构和链表存储结构)5.下列关于栈的叙述准确的是(D)A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素C.插入删除不需要移动元素 D.所需空间与线性表长度成正比7.用链表表示线性表的长处是(便于插入和删除操作)8.在单链表中,增加头结点的目的是(方便运算的实现)9.循环链表的主要长处是(从表中任一结点出发都能访问到整个链表)10.线性表L(a1a2a3aian),下列说法正确的是(D)A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素C.表中诸元素的排列顺
18、序必须是由小到大或由大到小D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)A.必须是连续的 B.部分地址必须是连续的C.一定是不连续的 D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数目是(有且只有1)14.在深度为5的满二叉树中,叶子结点的个数为(31)15.具有3个结点的二叉树有(5种形态)16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为(13)17.已知二叉树
19、后序遍历序列是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.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构)9. 数据结构中,与所使用的计算机无关
21、的是数据的(C)A存储结构 B物理结构 C逻辑结构 D物理和存储结构10. 下列叙述中,错误的是(B)A数据的存储结构与数据处理的效率密切相关B数据的存储结构与数据处理的效率无关C数据的存储结构在计算机中所占的空间不一定是连续的D一种数据的逻辑结构可以有多种存储结构11. 数据的存储结构是指(数据的逻辑结构在计算机中的表示)12. 数据的逻辑结构是指(反映数据元素之间逻辑关系的数据结构)13. 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为(线性结构和非线性结构)14. 下列数据结构具有记忆功能的是(C)A队列B循环队列C栈D顺序表15. 下列数据结构中,按先进后出原则组
22、织数据的是(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.下列叙述中正确的是(A)A线性表是线性结构 B栈与队列是非线性结构C线性链表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 软件工程 一些 知识点 知识
限制150内