《数据结构期末考试复习试题.pdf》由会员分享,可在线阅读,更多相关《数据结构期末考试复习试题.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、选择题。1在数据结构中,从逻辑上可以把数据结构分为 C。A动态结构和静态结构 B紧凑结构和非紧凑结构 C线性结构和非线性结构 D内部结构和外部结构 2数据结构在计算机内存中的表示是指 A 。A数据的存储结构 B数据结构 C数据的逻辑结构 D数据元素之间的关系 3在数据结构中,与所使用的计算机无关的是数据的 A 结构。A逻辑 B存储 C逻辑和存储 D物理 4在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C。A数据的处理方法 B数据元素的类型 C数据元素之间的关系 D数据的存储方法 5在决定选取何种存储结构时,一般不考虑 A。A各结点的值如何 B结点个数的多少 C对数据有哪些运算
2、D所用的编程语言实现这种结构是否方便。6以下说法正确的是 D。A数据项是数据的基本单位 B数据元素是数据的最小单位 C数据结构是带结构的数据项的集合 D一些表面上很不相同的数据可以有相同的逻辑结构 7算法分析的目的是 C,算法分析的两个主要方面是 A。(1)A找出数据结构的合理性 B研究算法中的输入和输出的关系 C分析算法的效率以求改进 C分析算法的易读性和文档性(2)A空间复杂度和时间复杂度 B正确性和简明性 C可读性和文档性 D数据复杂性和程序复杂性 8下面程序段的时间复杂度是 O(n2)。s=0;for(I=0;in;i+)for(j=0;jn;j+)s+=Bij;sum=s;9下面程序
3、段的时间复杂度是 O(n*m)。for(i=0;in;i+)for(j=0;jm;j+)Aij 0;10下面程序段的时间复杂度是 O(log3n)。i 0;while(inext=NULL Chead-next=head D head!=NULL 15带头结点的单链表 head 为空的判定条件是 B。Ahead=NULL B head-next=NULL Chead-next=head D head!=NULL 16若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用 D 存储方式最节省运算时间。A单链表 B给出表头指针的单循环链表 C双链表 D带头结点的双循环链表 1
4、7需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B。A单链表 B静态链表 C线性链表 D顺序存储结构 18非空的循环单链表 head 的尾结点(由 p所指向)满足 C 。Ap-next=NULL Bp=NULL Cp-next=head Dp=head 19在循环双链表的 p所指的结点之前插入 s所指结点的操作是 D 。Ap-prior=s;s-next=p;p-prior-next=s;s-prior=p-prior Bp-prior=s;p-prior-next=s;s-next=p;s-prior=p-prior Cs-next=p;s-prior=p-prior;p
5、-prior=s;p-prior-next=s Ds-next=p;s-prior=p-prior;p-prior-next=s;p-prior=s 20如果最常用的操作是取第 i个结点及其前驱,则采用 D 存储方式最节省时间。A单链表 B双链表 C单循环链表 D 顺序表 21在一个具有 n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是 B。AO(1)BO(n)CO(n2)DO(nlog2n)22在一个长度为 n(n1)的单链表上,设有头和尾两个指针,执行 B操作与链表的长度有关。A删除单链表中的第一个元素 B删除单链表中的最后一个元素 C在单链表第一个元素前插入一个新元素 D
6、在单链表最后一个元素后插入一个新元素 23与单链表相比,双链表的优点之一是 D 。A插入、删除操作更简单 B可以进行随机访问 C可以省略表头指针或表尾指针 D顺序访问相邻结点更灵活 24如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 B 。A只有表头指针没有表尾指针的循环单链表 B只有表尾指针没有表头指针的循环单链表 C非循环双链表 D循环双链表 25在长度为 n 的顺序表的第 i个位置上插入一个元素(1 i n+1),元素的移动次数为:A。An i+1 Bn i Ci Di 1 26对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为 C。
7、A顺序表 B用头指针表示的循环单链表 C用尾指针表示的循环单链表 D单链表 27下述哪一条是顺序存储结构的优点?C。A插入运算方便 B 可方便地用于各种逻辑结构的存储表示 C存储密度大 D删除运算方便 28下面关于线性表的叙述中,错误的是哪一个?B。A线性表采用顺序存储,必须占用一片连续的存储单元 B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链式存储,不必占用一片连续的存储单元 D线性表采用链式存储,便于进行插入和删除操作。29线性表是具有 n 个 B的有限序列。A字符 B数据元素 C数据项 D表元素 30在 n个结点的线性表的数组实现中,算法的时间复杂度是 O(1)的操作是 A
8、。A访问第 i(1=i=n)个结点和求第 i个结点的直接前驱(1i=n)B在第 i(1=i=n)个结点后插入一个新结点 C删除第 i(1=inext=s;s-next=p-next B s-next=p-next;p-next=s;Cp-next=s;p-next=s-next Dp-next=s-next;p-next=s 36线性表的顺序存储结构是一种 A。A随机存取的存储结构 B顺序存取的存储结构 C索引存取的存储结构 DHash 存取的存储结构 37栈的特点是 B,队列的特点是 A。A先进先出 B先进后出 38栈和队列的共同点是 C。A都是先进后出 B都是先进先出 C只允许在端点处插入
9、和删除元素 D没有共同点 39一个栈的进栈序列是 a,b,c,d,e,则栈的不可能的输出序列是 C。Aedcba Bdecba Cdceab Dabcde 40设有一个栈,元素依次进栈的顺序为 A、B、C、D、E。下列 C是不可能的出栈序列。AA,B,C,D,E BB,C,D,E,A CE,A,B,C,D DE,D,C,B,A 41以下 B不是队列的基本运算?A从队尾插入一个新元素 B从队列中删除第 i个元素 C判断一个队列是否为空 D读取队头元素的值 42若已知一个栈的进栈序列是 1,2,3,n,其输出序列为 p1,p2,p3,pn,若 p1n,则 pi为C。Ai Bni Cni1 D不确定
10、 43判定一个顺序栈 st(最多元素为 MaxSize)为空的条件是 B。Ast-top!=-1 Bst-top=-1 Cst-top!=MaxSize D st-top=MaxSize 44判定一个顺序栈 st(最多元素为 MaxSize)为满的条件是 D。Ast-top!=-1 Bst-top=-1 Cst-top!=MaxSize Dst-top=MaxSize 45一个队列的入队序列是 1,2,3,4,则队列的输出序列是 B 。A4,3,2,1 B1,2,3,4 C1,4,3,2 D3,2,4,1 46判定一个循环队列 qu(最多元素为 MaxSize)为空的条件是 C。Aqu-rea
11、r qu-front=MaxSize Bqu-rear qu-front-1=MaxSize Cqu-rear=qu-front D qu-rear=qu-front-1 47在循环队列中,若 front与 rear 分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是 C。Afront=rear+1 Brear=front+1 Cfront=rear Dfront=0 48向一个栈顶指针为 h的带头结点的链栈中插入指针 s 所指的结点时,应执行 D操作。Ah-next=s;Bs-next=h;Cs-next=h;h=s;Ds-next=h-next;h-next=s;49输入序列为 A
12、BC,可以变为 CBA时,经过的栈操作为 B。Apush,pop,push,pop,push,pop Bpush,push,push,pop,pop,pop Cpush,push,pop,pop,push,pop Dpush,pop,push,push,pop,pop 50若栈采用顺序存储方式存储,现两栈共享空间 V1 m,top1、top2分别代表第 1 和第 2 个栈的栈顶,栈 1的底在 V1,栈 2 的底在 Vm,则栈满的条件是 B。A|top2-top1|=0 B top1+1=top2 Ctop1+top2=m Dtop1=top2 51设计一个判别表达式中左、右括号是否配对出现的算
13、法,采用 D 数据结构最佳。A线性表的顺序存储结构 B队列 C线性表的链式存储结构 D栈 52允许对队列进行的操作有 D。A对队列中的元素排序 B取出最近进队的元素 C在队头元素之前插入元素 D删除队头元素 53对于循环队列 D。A无法判断队列是否为空 B无法判断队列是否为满 C队列不可能满 D以上说法都不对 54若用一个大小为 6的数值来实现循环队列,且当前 rear 和 front的值分别为 0和 3,当从队列中删除一个元素,再加入两个元素后,rear和 front的值分别为 B。A1和 5 B2和 4 C4和 2 D5和 1 55队列的“先进先出”特性是指 D。A最早插入队列中的元素总是
14、最后被删除 B当同时进行插入、删除操作时,总是插入操作优先 C每当有删除操作时,总是要先做一次插入操作 D每次从队列中删除的总是最早插入的元素 56和顺序栈相比,链栈有一个比较明显的优势是 A。A通常不会出现栈满的情况 B 通常不会出现栈空的情况 C插入操作更容易实现 D删除操作更容易实现 57用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时C。A仅修改队头指针 B仅修改队尾指针 C队头、队尾指针都可能要修改 D队头、队尾指针都要修改 58若串 S=software,其子串的数目是 B。A8 B37 C36 D9 59串的长度是指 B。A串中所含不同字
15、母的个数 B串中所含字符的个数 C串中所含不同字符的个数 D串中所含非空格字符的个数 60串是一种特殊的线性表,其特殊性体现在 B。A可以顺序存储 B数据元素是一个字符 C可以链式存储 D数据元素可以是多个字符 61设有两个串 p和 q,求 q在 p 中首次出现的位置的运算称为 B。A连接 B 模式匹配 C求子串 D求串长 62数组 A中,每个元素的长度为 3 个字节,行下标 i从 1到 8,列下标 j从 1 到 10,从首地址 SA 开始连续存放的存储器内,该数组按行存放,元素 A85的起始地址为 C。ASA141 B SA144 CSA222 DSA225 63数组 A中,每个元素的长度为
16、 3 个字节,行下标 i从 1到 8,列下标 j从 1 到 10,从首地址 SA 开始连续存放的存储器内,该数组按行存放,元素 A58的起始地址为 C。ASA141 B SA180 CSA222 DSA225 64若声明一个浮点数数组如下:froat average=new float30;假设该数组的内存起始位置为 200,average15的内存地址是 C。A214 B215 C260 D256 65设二维数组 A1 m,1 n按行存储在数组 B中,则二维数组元素 Ai,j在一维数组 B中的下标为 A。An*(i-1)+j B n*(i-1)+j-1 Ci*(j-1)Dj*m+i-1 66
17、有一个 10090 的稀疏矩阵,非 0元素有 10,设每个整型数占 2个字节,则用三元组表示该矩阵时,所需的字节数是 B。A20 B 66 C18 000 D33 67数组 A0 4,-1 -3,5 7中含有的元素个数是 A。A55 B 45 C36 D16 68对矩阵进行压缩存储是为了 D 。A方便运算 B 方便存储 C提高运算速度 D减少存储空间 69设有一个 10阶的对称矩阵 A,采用压缩存储方式,以行序为主存储,a1,1为第一个元素,其存储地址为 1,每个元素占 1 个地址空间,则 a8,5的地址为 B。A13 B 33 C18 D40 70稀疏矩阵一般的压缩存储方式有两种,即 C 。
18、A二维数组和三维数组 B 三元组和散列 C三元组和十字链表 D 散列和十字链表 71树最适合用来表示 C。A有序数据元素 B无序数据元素 C元素之间具有分支层次关系的数据 D元素之间无联系的数据 72深度为 5的二叉树至多有 C个结点。A16 B 32 C 31 C 10 73对一个满二叉树,m个叶子,n 个结点,深度为 h,则 D 。An=h+m B h+m=2n C m=h-1 D n=2h-1 74任何一棵二叉树的叶子结点在前序、中序和后序遍历序列中的相对次序 A 。A不发生改变 B发生改变 C不能确定 D以上都不对 75在线索化树中,每个结点必须设置一个标志来说明它的左、右链指向的是树
19、结构信息,还是线索化信息,若 0标识树结构信息,1标识线索,对应叶结点的左右链域,应标识为_D_。A00 B01 C10 D11 76在下述论述中,正确的是 D。只有一个结点的二叉树的度为 0;二叉树的度为 2;二叉树的左右子树可任意交换;深度为 K的顺序二叉树的结点个数小于或等于深度相同的满二叉树。A B C D 77设森林 F对应的二叉树为 B,它有 m个结点,B的根为 p,p的右子树的结点个数为 n,森林 F中第一棵树的结点的个数是 A。Am-n Bm-n-1 Cn+1 D不能确定 78若一棵二叉树具有 10个度为 2的结点,5 个度为 1的结点,则度为 0 的结点的个数是 B。A9 B
20、11 C15 D不能确定 79具有 10个叶子结点的二叉树中有 B 个度为 2 的结点。A8 B9 C10 D11 80在一个无向图中,所有顶点的度数之和等于所有边数的 C倍。A1/2 B 1 C 2 D 4 81在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的 B 倍。A1/2 B 1 C 2 D 4 82某二叉树结点的中序序列为 ABCDEFG,后序序列为 BDCAFGE,则其左子树中结点数目为:C A3 B2 C4 D5 83已知一算术表达式的中缀形式为 AB*CD/E,后缀形式为 ABC*+DE/,其前缀形式为 D。AA+B*C/DE BA+B*CD/E C+*ABC/DE
21、D+A*BC/DE 84已知一个图,如图所示,若从顶点 a 出发按深度搜索法进行遍历,则可能得到的一种顶点序列为_D_;按广度搜索法进行遍历,则可能得到的一种顶点序列为_A_;Aa,b,e,c,d,f Ba,c,f,e,b,d Ca,e,b,c,f,d,Da,e,d,f,c,b Aa,b,c,e,d,f Ba,b,c,e,f,d Ca,e,b,c,f,d,Da,c,f,d,e,b 85采用邻接表存储的图的深度优先遍历算法类似于二叉树的_A_。A先序遍历 B中序遍历 C后序遍历 D按层遍历 86采用邻接表存储的图的广度优先遍历算法类似于二叉树的_D_。A先序遍历 B中序遍历 C后序遍历 D按层遍
22、历 87具有 n 个结点的连通图至少有 A条边。A n-1 B n Cn(n-1)/2 D 2n 88广义表(a),a)的表头是 C,表尾是 C。Aa B ()C(a)D(a)abcdef89广义表(a)的表头是 C ,表尾是 B。Aa B ()C(a)D(a)90顺序查找法适合于存储结构为 B 的线性表。A 散列存储 B 顺序存储或链式存储 C 压缩存储 D 索引存储 91对线性表进行折半查找时,要求线性表必须 B。A 以顺序方式存储 B 以顺序方式存储,且结点按关键字有序排列 C 以链式方式存储 D 以链式方式存储,且结点按关键字有序排列 92采用折半查找法查找长度为 n的线性表时,每个元
23、素的平均查找长度为 D。A O(n2)B O(nlog2n)C O(n)D O(log2n)93有一个有序表为1,3,9,12,32,41,45,62,75,77,82,95,100,当折半查找值为 82 的结点时,C 次比较后查找成功。A 11 B 5 C 4 D 8 94二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法 B。A 正确 B 错误 95下面关于 B树和 B+树的叙述中,不正确的结论是 A。A B 树和 B+树都能有效的支持顺序查找 B B 树和 B+树都能有效的支持随机查找 C B 树和 B+树都是平衡的多叉树 D B树和 B+树都
24、可用于文件索引结构 96以下说法错误的是 B。A散列法存储的思想是由关键字值决定数据的存储地址 B散列表的结点中只包含数据元素自身的信息,不包含指针。C负载因子是散列表的一个重要参数,它反映了散列表的饱满程度。D散列表的查找效率主要取决于散列表构造时选取的散列函数和处理冲突的方法。97查找效率最高的二叉排序树是 C。A所有结点的左子树都为空的二叉排序树。B所有结点的右子树都为空的二叉排序树。C平衡二叉树。D没有左子树的二叉排序树。98排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为 C 。A希尔排序 B。冒泡排序 C插入排序 D。选
25、择排序 99在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是 D 。A希尔排序 B冒泡排序 C直接插入排序 D直接选择排序 100堆是一种有用的数据结构。下列关键码序列 D是一个堆。A94,31,53,23,16,72B94,53,31,72,16,23 C16,53,23,94,31,72D16,31,23,94,53,72 101堆排序是一种 B排序。A插入 B选择 C交换 D归并 102D 在链表中进行操作比在顺序表中进行操作效率高。A顺序查找 B折半查找 C分块查找 D插入 103直接选择排序的时间复杂度为 D。(n 为元素个数)AO(n)BO(log2n)CO(nlo
26、g2n)D O(n2)二、填空题。1数据逻辑结构包括线性结构、树形结构和图状结构三种类型,树形结构和图状结构合称非线性结构。2数据的逻辑结构分为 集合、线性结构、树形结构和图状结构 4 种。3在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1 个前驱结点;最后一个结点 没有 后续结点,其余每个结点有且只有 1 个后续结点。4线性结构中元素之间存在 一对一 关系,树形结构中元素之间存在 一对多 关系,图形结构中元素之间存在 多对多 关系。5在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点可以 任意多个 。
27、6数据结构的基本存储方法是顺序、链式、索引和 散列 存储。7衡量一个算法的优劣主要考虑正确性、可读性、健壮性和时间复杂度与空间复杂度。8评估一个算法的优劣,通常从时间复杂度 和 空间复杂度 两个方面考察。9算法的 5个重要特性是 有穷性、确定性、可行性、输入和输出。10在一个长度为 n 的顺序表中删除第 i个元素时,需向前移动 n-i-1 个元素。11在单链表中,要删除某一指定的结点,必须找到该结点的前驱 结点。12在双链表中,每个结点有两个指针域,一个指向 前驱结点,另一个指向 后继结点。13在顺序表中插入或删除一个数据元素,需要平均移动 n 个数据元素,移动数据元素的个数与位置有关。14当
28、线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表的元素是,应采用顺序 存储结构。15根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成单链表和双链表。16顺序存储结构是通过下标 表示元素之间的关系的;链式存储结构是通过指针表示元素之间的关系的。17带头结点的循环链表 L中只有一个元素结点的条件是 L-next-next=L。18栈是限定仅在表尾进行插入或删除操作的线性表,其运算遵循后进先出的原则。19空串是 零个字符的串 ,其长度等于 零。空白串是由一个或多个空格字符组成的串,其长度等于其包含的空格个数。20组成串的数据元素只能是单个字符。21一
29、个字符串中任意个连续字符构成的部分称为该串的子串。22子串”str”在主串”datastructure”中的位置是 5。23二维数组 M 的每个元素是 6 个字符组成的串,行下标 i的范围从 0 到 8,列下标 j的范围从 1 到 10,则存放 M 至少需要 540个字节;M 的第 8列和第 5 行共占 108个字节。24稀疏矩阵一般的压缩存储方法有两种,即三元组表和十字链表。25广义表(a),(b),c),(d)的长度是 3 ,深度是 4 。26在一棵二叉树中,度为零的结点的个数为 n0,度为 2 的结点的个数为 n2,则有 n0 n2+1。27在有 n 个结点的二叉链表中,空链域的个数为_
30、n+1_。28一棵有 n个叶子结点的哈夫曼树共有_2n-1_个结点。29深度为 5的二叉树至多有 31 个结点。30若某二叉树有 20个叶子结点,有 30 个结点仅有一个孩子,则该二叉树的总结点个数为 69。31某二叉树的前序遍历序列是 abdgcefh,中序序列是 dgbaechf,其后序序列为 gdbehfca。32线索二叉树的左线索指向其遍历序列中的前驱,右线索指向其遍历序列中的后继。33在各种查找方法中,平均查找长度与结点个数 n 无关的查找方法是散列查找法。34在分块索引查找方法中,首先查找索引表,然后查找相应的块表。35一个无序序列可以通过构造一棵二叉排序树而变成一个有序序列,构造
31、树的过程即为对无序序列进行排序的过程。36具有 10个顶点的无向图,边的总数最多为_45_。37已知图 G 的邻接表如图所示,其从顶点 v1出发的深度优先搜索序列为_v1v2v3v6v5v4_,其从顶点 v1 出发的广度优先搜索序列为_v1v2v5v4v3v6_。v1v2v3v4v5v6v3v2v6v4v5v5v6v3v4 38索引是为了加快检索速度而引进的一种数据结构。一个索引隶属于某个数据记录集,它由若干索引项组成,索引项的结构为 关键字和关键字对应记录的地址。39Prim 算法生成一个最小生成树每一步选择都要满足边的总数不超过 n-1,当前选择的边的权值是候选边中最小的,选中的边加入树中
32、不产生回路三项原则。40在一棵 m阶 B 树中,除根结点外,每个结点最多有 m棵子树,最少有 m/2 棵子树。三、判断题。1在决定选取何种存储结构时,一般不考虑各结点的值如何。()2抽象数据类型(ADT)包括定义和实现两方面,其中定义是独立于实现的,定义仅给出一个 ADT 的逻辑特性,不必考虑如何在计算机中实现。()3抽象数据类型与计算机内部表示和实现无关。()4顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。()5线性表采用链式存储结构时,结点和结点内部的存储空间可以是不连续的。()6对任何数据结构链式存储结构一定优于顺序存储结构。()7顺序存储方式只能用于存储线性结构。()8集
33、合与线性表的区别在于是否按关键字排序。()9线性表中每个元素都有一个直接前驱和一个直接后继。()10线性表就是顺序存储的表。()11取线性表的第 i个元素的时间同 i的大小有关。()12循环链表不是线性表。()13链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序表中效率高。()14双向链表可随机访问任一结点。()15在单链表中,给定任一结点的地址 p,则可用下述语句将新结点 s插入结点 p 的后面:p-next=s;s-next=p-next;()16队列是一种插入和删除操作分别在表的两端进行的线性表,是一种先进后出的结构。()17.串是一种特殊的线性表,其特殊性体现在可
34、以顺序存储。()18长度为 1的串等价于一个字符型常量。()19空串和空白串是相同的。()20数组元素的下标值越大,存取时间越长。()21用邻接矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。()22一个广义表的表头总是一个广义表。()23一个广义表的表尾总是一个广义表。()24广义表(a),b),c)的表头是(a),b),表尾是(c)。()25二叉树的后序遍历序列中,任意一个结点均处在其孩子结点的后面。()26度为 2 的有序树是二叉树。()27二叉树的前序遍历序列中,任意一个结点均处在其孩子结点的前面。()28用一维数组存储二叉树时
35、,总是以前序遍历顺序存储结点。()29若已知一棵二叉树的前序遍历序列和后序遍历序列,则可以恢复该二叉树。()30在哈夫曼树中,权值最小的结点离根结点最近。()31强连通图的各顶点间均可达。()32对于任意一个图,从它的某个结点进行一次深度或广度优先遍历可以访问到该图的每个顶点。()33在待排序的记录集中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序仍然保持不变,称这种排序为稳定排序。()34在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过 1。()35拓扑排序是按 AOE 网中每个结点事件的最早发生时间对结点进行排序。()36冒泡排序算法关键字比较的次数与记录的初始排列次
36、序无关。()37对线性表进行折半查找时,要求线性表必须以链式方式存储,且结点按关键字有序排列。()38散列法存储的思想是由关键字值决定数据的存储地址。()39二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。()40具有 n 个结点的二叉排序树有多种,其中树高最小的二叉排序树是最佳的。()41直接选择排序算法在最好情况下的时间复杂度为 O(n)。()四、应用简答题。1有下列几种用二元组表示的数据结构,画出它们分别对应的逻辑图形表示,并指出它们分别属于何种结构。(1)A D,R,其中:Da,b,c,d,e,f,g,h,R r,r ,(2)B D,R,其中:Da
37、,b,c,d,e,f,g,h,R r,r ,(3)C D,R,其中:D1,2,3,4,5,6,R r,r (1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)2简述顺序表和链表存储方式的特点。答:顺序表的优点是可以随机访问数据元素,缺点是大小固定,不利于增减结点(增减结点操作需要移动元素)。链表的优点是采用指针方式增减结点,非常方便(只需改变指针指向,不移动结点)。其缺点是不能进行随机访问,只能顺序访问。另外,每个结点上增加指针域,造出额外存储空间增大。3对链表设置头结点的作用是什么?(至少说出两条好处)答:其好处有:(1)对带头结点的链表,在表的任何
38、结点之前插入结点或删除表中任何结点,所要做的都是修改前一个结点的指针域,因为任何元素结点都有前驱结点(若链表没有头结点,则首元素结点没有前驱结点,在其前插入结点和删除该结点时操作复杂些)。(2)对带头结点的链表,表头指针是指向头结点的非空指针,因此空表与非空表的处理是一样的。4对于一个栈,给出输入项 A,B,C。如果输入项序列由 A,B,C组成,试给出全部可能的输出序列。5设有 4 个元素 1、2、3、4依次进栈,而栈的操作可随时进行(进出栈可任意交错进行,但要保证进栈次序不破坏 1、2、3、4的相对次序),请写出所有不可能的出栈次序和所有可能的出栈次序。6现有稀疏矩阵 A如图所示,要求画出三
39、元组表示法和十字链表表示法:000280000000910000000060000003130150220015 7设 4维数组的 4 个下标的范围分别为-1,0,1,2,1,3,-2,-1,请分别按行序和列序列出各元素。8有一份电文中共使用 5个字符:a,b,c,d,e,它们出现的频率依次为 4,7,5,2,9,试画出对应的哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。9有如图所示的二叉树,回答如下问题。(1)写出该树的中序遍历序列;(2)写出该树的先序遍历序列;(3)写出该树的后序遍历序列;(4)画出该二叉树的中序线索二叉树;(5)画出该二
40、叉树的后序线索二叉树;(6)画出该二叉树对应的森林;10已知一棵树边的集合为,,画出这棵树。11假设二叉树采用顺序存储结构,如图所示。(1)画出二叉树表示;(2)写出先序遍历、中序遍历和后序遍历的结果;(3)写出结点值 c的双亲结点,其左、右孩子;(4)画出把此二叉树还原成森林的图。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 e a f d g c j h i b 12已知一棵二叉树的中序序列为 cbedahgijf,后序序列为 cedbhjigfa,画出该二叉树的先序线索二叉树。13某二叉树的先序遍历序列是 abdgcefh,中序遍历
41、序列是 dgbaechf,给出其后序遍历序列。14将下图所示森林转换成为二叉树,并写出转化后二叉树中序遍历结果。15有一份电文中共使用 8 个字符:a、b、c、d、e、f、o、i,它们的出现频率依次为 10,20,15,32,40,60,26,18。试画出对应的哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。16已知某系统在通信联络中只可能出现 A,B,C,D,E,F,G,H 八种字符,其频率为 0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11 试设计哈夫曼编码。17对有五个顶点v1,v2,v3,v4,v5的图的邻接
42、矩阵如图所示,解答下列问题:(1)画出逻辑图。(2)画出该逻辑结构的邻接表。(3)基于邻接矩阵写出图的深度、广度优先遍历序列。18如图所示,解答如下问题:(1)写出从定点 A出发,深度和广度优先遍历方法遍历该图的顶点序列。(2)根据普里姆算法和克鲁斯卡尔算法,分别求它的最小生成树,要求给出构造过程。ADBFGEC531326415 19给出如图所示的无向图 G 的邻接矩阵和邻接表两种存储结构。并在给定的邻接表的基础上,指出从顶点 1出发的深度优先遍历和广度优先遍历序列。12453图 一个无向图G 20使用普里姆算法构造出如图所示的图 G 的一棵最小生成树。124535632图 一个无向图G66
43、15546 21使用克鲁斯卡尔算法构造出如图所示的图 G 的一棵最小生成树。05001020060010301000abcdefghi ABFCDEGHIJKNLMOPQR1264541882012152523图 一个无向图G7365107 22设有一棵二叉树,它的中序和后序遍历结果如下,请画出该二叉树。中序:1 4 3 5 6 2 后序:4 6 5 3 2 1 23设一棵顺序二叉树具有 10 个结点,请计算其中叶子结点的数目。24设如图所示二叉树是由某棵树转化而来,请画出其对应的原树。1234567 25设有如图所示的一棵树,请将其转化为二叉树。1245148367101112139 26下
44、表给出了某工程各工序之间的优先关系和各工序所需时间。解答下列问题:(1)画出相应的 AOE图;(2)给出各事件的最早发生时间和最晚发生时间;(3)找出关键路径,并指明完成该工程所需最短时间;(4)若把 AOE 网视为 AOV网,给出其一个拓扑序列的例子。工 序代号 A B C D E F G H I J K L M M 时间 15 10 50 8 15 40 90 15 80 60 15 30 20 40 先 驱工作 A,B B C,D B E G,I E I F,I H,J,K L G 27某不带权有向图如下所示。给出其邻接矩阵和邻接表表示。DABCEFG 28求如下 AOE图的关键路径,要
45、求给出求解过程。29有一组数据,内容如下:8,15,38,57,68,88,98,108,129,234,256 试用二分查找法查找 68和 222,要求先画出二叉折半检索树,然后写出查找过程。30已知有序表为12,18,24,35,47,50,62,83,90,115,134,请画出采用折半查找法对应的判断树。31设数据集合 d1,12,5,8,3,10,7,13,9,试完成下列各题:(1)依次取 d 中各数据,构造一棵二叉排序树 bt。(2)如何依据此二叉树 bt得到 d 的一个有序序列。(3)画出在二叉树 bt 中删除“12”后的树结构。32对给定的数列 R7,16,4,8,20,9,6
46、,18,5,构造一棵二叉排序树,并且(1)给出按中序遍历得到的数列 R1。(1)给出按后序遍历得到的数列 R2。33已知序列17,18,60,40,7,32,73,65,85,请给出采用冒泡排序法对该序列作升序排序时每一趟的结果。34已知序列503,87,512,61,908,170,897,275,653,462,请给出采用快速排序法对该序列作升序排序时每一趟的结果。35已知序列503,87,512,61,908,170,897,275,653,462,请给出采用堆排序法对该序列作升序排序时每一趟的结果。36已知序列503,87,512,61,908,170,897,275,653,462,
47、请给出采用希尔排序法对该序列作升序排序时每一趟的结果。37已知序列17,18,60,40,7,32,73,65,85,请给出采用直接插入排序法对该序列作升序排序时每一趟的结果。38设散列表的长度 m13(0,1,2,12),散列函数为 H(k)k mod m,给定的关键字序列为19,14,23,10,68,20,84,27,55,11。试画出用线性探测法解决冲突时所构造的散列表。五、算法设计题。1已知一个顺序表 L,其中的元素按值非递减有序排列,设计一个算法插入一个元素 x 后保持该顺序表仍按非递减有序排列。2设计一个算法从顺序表 L中删除所有值为 x 的元素。3已知线性表元素递增有序,并以带
48、头结点的单链表作存储结构,设计一个高效算法,删除表中所有值大于 mink 且小于 maxk 的元素(若表中存在这样的元素)。并分析所写算法的时间复杂度。4设计一个在带头结点的单链表中删除一个最小值结点的高效算法。5有一个不带头结点的单链表 L(至少有一个结点),其头指针为 head。设计一个算法将 L逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。6假设二叉树采用链式存储方式存储,编写一个二叉树前序遍历的非递归算法。7假设二叉树采用链式存储方式存储,编写一个二叉树后序遍历的非递归算法。8假设二叉树采用链式存储方式存储,编写一个二叉树中序遍历的非递归算法。9编写一
49、个 c+函数。实现线性表就地逆置。即在原表的存储空间内将线性表(a1,a2,an)逆置为(an,a2,a1)。10编写一个单链表倒链程序,即将单链表中每个结点的前驱与后继关系颠倒。11在数组 a0n-1中存放有 n 个不同的整数,请编写一个函数,将 a 中的 n 个数按从小到大的顺序排列。12有一个不带头结点的单链表 L(至少有一个结点),其头指针为 head。设计一个算法将 L逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。13已知非空线性链表的第一个结点的指针为 head,请写一个算法,将该链表中数据域值最小的结点移动到链表的最前端。编写的函数具有如下原型:void func(TLinkNode*head),其中链结点的结构如下:struct TLinkNode int data;TLinkNode*next;请完成该算法。14在数组 a0n-1中存放有 n 个不同的整数,请编写一个函数,将 a 中的 n 个数按从小到大的顺序排列,要求使用改进的插入排序算法,元素 ai要插入的位置由折半(二分)查找算法找到。