2022年数据结构试题及答案修归纳 .pdf
1 试卷一一、单选题(每题2 分,共 20 分)1. 对一个算法的评价,不包括如下()方面的内容。A健壮性和可读性B并行性C正确性D时空复杂度2. 在带有头结点的单链表HL 中,要向表头插入一个由指针p 指向的结点,则执行( )。A. p-next=HL-next; HL-next=p; B. p-next=HL; HL=p; C. p-next=HL; p=HL; D. HL=p; p-next=HL; 3. 对线性表,在下列哪种情况下应当采用链表表示?( ) A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4. 一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5. AOV 网是一种() 。A有向图B无向图C无向无环图D有向无环图7. 若需要利用形参直接访问实参时,应将形参变量说明为()参数。A值B函数C指针D引用8. 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的() 。A行号B列号C元素值D非零元素个数二、 填空题(每空1 分,共 28 分)1. 数据结构是指数据及其相互之间的_。当结点之间存在M 对 N(M:N)的联系时,称这种结构为_。2. 队列的插入操作是在队列的_尾_进行,删除操作是在队列的_首_进行。3. 当用长度为N 的数组顺序存储一个栈时,假定用top=N 表示栈空,则表示栈满的条件是_top=0_。4. 对于一个长度为n 的单链存储的线性表,在表头插入元素的时间复杂度为_,在表尾插入元素的时间复杂度为_。7. 二叉树是指度为2 的_树。一棵结点数为N 的二叉树,其所有结点的度的总和是 _。8. 对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个_。对一棵由算术 表 达 式 组 成 的 二 叉 语 法 树 进 行 后 序 遍 历 得 到 的 结 点 序 列 是 该 算 术 表 达 式 的_。9. 对于一棵具有n 个结点的二叉树,用二叉链表存储时,其指针总数为_个,其中_个用于指向孩子,_个指针是空闲的。10. 若对一棵完全二叉树从0 开始进行结点的编号,并按此编号把它顺序存储到一维数组A 中,即编号为 0 的结点存储到A0 中。其余类推, 则 A i 元素的左孩子元素为_,右孩子元素为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 2 _,双亲元素为 _。11. 在 线 性 表 的 散 列 存 储 中 , 处 理 冲 突 的 常 用 方 法 有 _和_两种。三、运算题(每题6 分,共 24 分)1. 已知一个 6 5稀疏矩阵如下所示,试:(1) 写出它的三元组线性表;(2) 给出三元组线性表的顺序存储表示。2. 设有一个输入数据的序列是 46, 25, 78, 62, 12, 80 , 试画出从空树起,逐个输入各个数据而生成的二叉搜索树。3. 对于图 6 所示的有向图若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,试写出:从顶点出发进行深度优先搜索所得到的深度优先生成树;从顶点出发进行广度优先搜索所得到的广度优先生成树;4. 已知一个图的顶点集V 和边集 E 分别为:V=1,2,3,4,5,6,7; E=,; 若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,按主教材中介绍的拓朴排序算法进行排序,试给出得到的拓朴排序的序列。四、 阅读算法(每题7 分,共 14 分)1. int Prime(int n) int i=1; int x=(int) sqrt(n); while (+ix) return 1; else return 0; (1)指出该算法的功能;(2) 该算法的时间复杂度是多少?2. 写出下述算法的功能:void AJ(adjlist GL, int i, int n) Queue Q; InitQueue(Q); coutiadjvex; if(!visitedj) coutjnext; HL 是单链表的头指针,试写出删除头结点的算法。ElemType DeleFront(LNode * & HL)参考答案一、单选题(每题2 分,共 20 分)1.B 2.A 3.B 4.C 5.D 6.B 7.D 8.A 9.D 10.C 二、 填空题(每空1 分,共 26 分)1. 联系图(或图结构)2. 尾首3. top=0 4. O(1)O(n)5. 128 44 108 6. 3 3 7. 有序n-1 8. 有序序列后缀表达式(或逆波兰式)9. 2n n-1 n+1 10. 2i+1 2i+2 (i-1)/2 11. 开放定址法链接法12. 快速归并三、运算题(每题6 分,共 24 分)1. (1)(1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7) (3 分) 6 5 5 1 5 1 3 2 -1 4 5 -2 5 1 5 6 3 7 图 7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 4 (2)三元组线性表的顺序存储表示如图7 示。2. 如图 8 所示。3. DFS:BFS:4. 拓朴排序为:4 3 6 5 7 2 1 四、阅读算法(每题7 分,共 14 分)1. (1) 判断 n 是否是素数(或质数)(2)O(n)2. 功能为:从初始点vi出发广度优先搜索由邻接表GL 所表示的图。六、 编写算法( 8 分)ElemType DeleFront(LNode * & HL) if (HL=NULL) cerr空表next; ElemType temp=p-data; delete p; return temp; 试卷十三一、选择题 (30分) 1下列程序段的时间复杂度为() 。for(i=0 ; im; i+) for(j=0 ; jt; j+) cij=0;for(i=0 ; im; i+) for(j=0 ; jt; j+) for(k=0 ; kright=s ; s-left=p; p-right-left=s ; s-right=p-right ;(B) s-left=p ;s-right=p-right ;p-right=s; p-right-left=s ;(C) p-right=s ; p-right-left=s ; s-left=p; s-right=p-right ;(D) s-left=p ;s-right=p-right ;p-right-left=s ; p-right=s;7设输入序列1、2、3、n 经过栈作用后,输出序列中的第一个元素是n,则输出序列中的第i 个输出元素是() 。(A) n-i (B) n-1-i (C) n+l -i (D) 不能确定8设散列表中有m 个存储单元,散列函数H(key)= key % p ,则 p 最好选择() 。(A) 小于等于 m 的最大奇数(B) 小于等于 m 的最大素数(C) 小于等于 m 的最大偶数(D) 小于等于m 的最大合数9设在一棵度数为3 的树中,度数为3的结点数有2 个,度数为 2 的结点数有 1 个,度数为 1 的结点数有 2 个,那么度数为0 的结点数有()个。(A) 4 (B) 5 (C) 6 (D) 7 10.设完全无向图中有n 个顶点,则该完全无向图中有()条边。(A) n(n-1)/2 (B) n(n-1) (C) n(n+1)/2 (D) (n-1)/2 14.设有向无环图G 中的有向边集合E=, ,则下列属于该有向图 G 的一种拓扑排序序列的是() 。(A) 1 ,2,3,4 (B) 2,3,4,1 (C) 1,4,2,3 (D) 1 ,2,4,3 二、填空题 (30分) 1 设指针 p 指向单链表中结点A,指针 s 指向被插入的结点X,则在结点A 的前面插入结点X时的操作序列为: 1)s-next=_;2) p-next=s;3) t=p-data;4) p-data=_;5) s-data=t;2设某棵完全二叉树中有100 个结点,则该二叉树中有_个叶子结点。3 设某顺序循环队列中有m 个元素,且规定队头指针F 指向队头元素的前一个位置,队尾指针R 指向队尾元素的当前位置,则该循环队列中最多存储_队列元素。6设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关键字构造的二叉排序树的平均查找长度是_。7设一棵二叉树的中序遍历序列为BDCA ,后序遍历序列为DBAC ,则这棵二叉树的前序序列为_。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 6 8设用于通信的电文仅由8 个字母组成,字母在电文中出现的频率分别为7、19、2、6、32、3、21、10,根据这些频率作为权值构造哈夫曼树,则这棵哈夫曼树的高度为_。10设无向图 G(如右图所示),则其最小生成树上所有边的权值之和为_。三、判断题 (20分) 1有向图的邻接表和逆邻接表中表结点的个数不一定相等。( ) 2对链表进行插入和删除操作时不必移动链表中结点。( ) 3子串“ ABC ”在主串 “AABCABCD” 中的位置为 2。( ) 4若一个叶子结点是某二叉树的中序遍历序列的最后一个结点,则它必是该二叉树的先序遍历序列中的最后一个结点。( ) 6用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。( ) 7中序遍历一棵二叉排序树可以得到一个有序的序列。( ) 8入栈操作和入队列操作在链式存储结构上实现时不需要考虑栈溢出的情况。( ) 9顺序表查找指的是在顺序存储结构上进行查找。()10堆是完全二叉树,完全二叉树不一定是堆。()五、算法设计题 (20 分) 1设计计算二叉树中所有结点值之和的算法。2设计将所有奇数移到所有偶数之前的算法。3设计判断单链表中元素是否是递增的算法。参考答案一、选择题1A 2A 3A 4C 5D 6D 7C 8B 9C 10A 11C 12C 13D 14A 15A 二、填空题1. p-next,s-data 2. 50 3. m-1 4. 6,8 5. 快速,堆 6. 19/7 7. CBDA 8. 6 9. (24,65,33,80,70,56,48) 10. 8 三、判断题1错2对3对4对5错6错7对8对9错10对四、算法设计题1设计计算二叉树中所有结点值之和的算法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 7 void sum(bitree *bt,int &s) if(bt!=0) s=s+bt-data; sum(bt-lchild,s); sum(bt-rchild,s); 2设计将所有奇数移到所有偶数之前的算法。void quickpass(int r, int s, int t) int i=s,j=t,x=rs; while(ij) while (ij & rj%2=0) j=j-1; if (ij) ri=rj;i=i+1; while (ij & ri%2=1) i=i+1; if (inext=0) return(1);else for(q=head,p=head-next; p!=0; q=p,p=p-next)if(q-datap-data) return(0); return(1); 试卷十四一、选择题 (24分) 1下列程序段的时间复杂度为() 。i=0,s=0; while (snext=p-next ;p-next=-s;(B) q-next=s ; s-next=p;(C) p-next=s-next;s-next=p;(D) p-next=s ;s-next=q;4设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为() 。(A) 5,3,4,6,1,2 (B) 3 ,2,5,6,4,1 (C) 3,1,2,5,4,6 (D) 1,5,4,6,2,3 5设有一个 10 阶的下三角矩阵A(包括对角线),按照从上到下、从左到右的顺序存储到连续的55 个存储单元中,每个数组元素占1 个字节的存储空间,则A54 地址与 A00 的地址之差为() 。(A) 10 (B) 19 (C) 28 (D) 55 6设一棵 m 叉树中有N1个度数为 1 的结点, N2个度数为 2 的结点, ,Nm 个度数为 m 的结点,则该树中共有()个叶子结点。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 8 (A) miiNi1) 1(B) miiN1(C) miiN2(D) miiNi2) 1(18. 设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树,则这棵哈夫曼树的带权路径长度为() 。(A) 129 (B) 219 (C) 189 (D) 229 9. 设有 n 个关键字具有相同的Hash 函数值,则用线性探测法把这n 个关键字映射到HASH 表中需要做()次线性探测。(A) n2(B) n(n+1) (C) n(n+1)/2 (D) n(n-1)/2 10.设某棵二叉树中只有度数为0 和度数为 2 的结点且度数为0 的结点数为n,则这棵二叉中共有()个结点。(A) 2n (B) n+l (C) 2n-1 (D) 2n+l 二、填空题 (48分,其中最后两小题各6 分) 1. 设需要对 5 个不同的记录关键字进行排序,则至少需要比较 _次,至多需要比较_次。5. 设一棵 m 叉树脂的结点数为n,用多重链表表示其存储结构,则该树中有 _个空指针域。6. 设指针变量p 指向单链表中结点A,则删除结点A 的语句序列为:q=p-next;p-data=q-data;p-next=_;feee(q);7. 数据结构从逻辑上划分为三种基本类型:_、_和_。8. 设无向图G 中有 n 个顶点 e条边,则用邻接矩阵作为图的存储结构进行深度优先或广度优先遍历时的时间复杂度为_;用邻接表作为图的存储结构进行深度优先或广度优先遍历的时间复杂度为 _。.12. 设有向图 G 中的有向边的集合E=, ,则该图的一个拓扑序列为_。13. 下面程序段的功能是建立二叉树的算法,请在下划线处填上正确的内容。typedef struct nodeint data;struct node *lchild;_;bitree; void createbitree(bitree *&bt) scanf(“%c ”,&ch);if(ch=#) _;else bt=(bitree*)malloc(sizeof(bitree); bt-data=ch; _;createbitree(bt-rchild); 14. 下面程序段的功能是利用从尾部插入的方法建立单链表的算法,请在下划线处填上正确的内容。typedef struct node int data; struct node *next; lklist; void lklistcreate(_ *&head ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 9 for (i=1;idata);p-next=0; if(i=1)head=q=p;else q-next=p;_; 参考答案一、选择题1A 2D 3B 4B 5B 6D 7A 8D 9D 10C 11B 12D 二、填空题1. 4,10 2. O(nlog2n),O(n2) 3. n 4. 1,2 5. n(m-1)+1 6. q-next 7. 线性结构,树型结构,图型结构8. O(n2), O(n+e) 9. 8/3 10. (38,13,27,10,65,76,97) 11. (10,13,27,76,65,97,38) 12. 124653 13. struct node *rchild ,bt=0,createbitree(bt-lchild) 14. lklist ,q=p 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -