1、C17 D186二维数组A89按行优先顺序存储,若数组元素A23的存储地址为1087,A47的存储地址为1153,则数组元素A67的存储地址为()A1207 B1209C1211 D12137在按层次遍历二叉树的算法中,需要借助的辅助数据结构是()A队列 B栈C线性表 D有序表8在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系()A不一定相同 B都相同C都不相同 D互为逆序9若采用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的()A层次遍历算法 B前序遍历算法C中序遍历算法 D后序遍历算法10若用邻接矩阵表示一个有向图,则其中每一列包含的1的个数为()A图中每个顶点
2、的入度 B图中每个顶点的出度C图中弧的条数 D图中连通分量的数目11图的邻接矩阵表示法适用于表示()A无向图 B有向图C稠密图 D稀疏图12在对n个关键字进行直接选择排序的过程中,每一趟都要从无序区选出最小关键字元素,则在进行第i趟排序之前,无序区中关键字元素的个数为()Ai Bi+1Cn-i Dn-i+113下列排序算法中,其时间复杂度和记录的初始排列无关的是()A插入排序 B堆排序C快速排序 D冒泡排序14若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找关键字b的过程中,先后进行比较的关键字依次为()Af,c,b Bf,d,bCg,c,b Dg,d,b15若在
3、文件中查询年龄在60岁以上的男性及年龄在55岁以上的女性的所有记录,则查询条件为()A(性别=“男”)OR(年龄60)OR(性别=“女”)OR(年龄55) B(性别=“男”)OR(年龄60)AND(性别=“女”)OR(年龄55)C(性别=“男”)AND(年龄60)OR(性别=“女”)AND(年龄D(性别=“男”)AND(年龄60)AND(性别=“女”)AND(年龄二、填空题(本大题共10小题,每小题2分,共20分) 请在每小题的空格中填上正确答案。错填、不填均无分。16称算法的时间复杂度为O(f(n),其含义是指算法的执行时间和_的数量级相同。17在一个长度为n的单链表L中,删除链表中*p的前
4、驱结点的时间复杂度为_。18假设为循环队列分配的向量空间为Q20,若队列的长度和队头指针值分别为13和17,则当前尾指针的值为_。19设s=I AM A ATHLETE,t=GOOD,则执行下列串操作序列之后得到的sub1为_。substr (sub1,s,5,2);substr(sub2,s,6,8); strcpy(t1,t);strcat(t1,sub2); strcat(sub1,t1);20广义表的深度是指_。21一棵含999个结点的完全二叉树的深度为_。22含n个顶点的无向连通图中至少含有_条边。23对表长为9000的索引顺序表进行分块查找,假设每一块的长度均为15,且以顺序查找确
5、定块,则在各记录的查找概率均相等的情况下,其查找成功的平均查找长度为_。24若对关键字序列(43,02,80,48,26,57,15,73,21,24,66)进行一趟增量为3的希尔排序,则得到的结果为_。25ISAM文件由主索引、_、_和主文件组成。三、解答题(本大题共4小题,每小题5分,共20分)26某广义表的表头和表尾均为(a,(b,c),画出该广义表的图形表示。27已知二叉树的先序序列和中序序列分别为HDACBGFE和ADCBHFEG。(1)画出该二叉树;(2)画出与(1)求得的二叉树对应的森林。(1)(2)28已知带权图的邻接表如下所示,其中边表结点的结构为:依此邻接表从顶点C出发进行
6、深度优先遍历。(1)画出由此得到的深度优先生成树;(2)写出遍历过程中得到的从顶点C到其它各顶点的带权路径及其长度。29从空树起,依次插入关键字37,50,42,18,48,12,56,30,23,构造一棵二叉排序树。(1)画出该二叉排序树;(2)画出从(1)所得树中删除关键字为37的结点之后的二叉排序树。四、算法阅读题(本大题共4小题,每小题5分,共20分)30已知用有序链表存储整数集合的元素。阅读算法f30,并回答下列问题:(1)写出执行f30(a,b)的返回值,其中a和b分别为指向存储集合2,4,5,7,9,12和2,4,5,7,9的链表的头指针;(2)简述算法f30的功能;(3)写出算
7、法f30的时间复杂度。 int f30(LinkList ha,LinkList hb) /LinkList是带有头结点的单链表 /ha和hb分别为指向存储两个有序整数集合的链表的头指针 LinkList pa,pb; pa=ha-next; pb=hb- while(pa & pb & pa-data=pb-data) pa=pa- pb=pb- if(pa=NULL & pb=NULL) return 1; else return 0;(3)31已知稀疏矩阵采用带行表的三元组表表示,其形式说明如下: #define MaxRow 100 /稀疏矩阵的最大行数 typedef struct
8、int i,j,v; /行号、列号、元素值 TriTupleNode; typedef struct TriTupleNode dataMaxSize; int RowTabMaxRow+1; /行表 int m,n,t; /矩阵的行数、列数和非零元个数 RTriTupleTable; 下列算法f31的功能是,以行优先的顺序输入稀疏矩阵的非零元(行号、列号、元素值),建立稀疏矩阵的带行表的三元组表存储结构。请在空缺处填入合适内容,使其成为一个完整的算法。(注:矩阵的行、列下标均从1起计) void f31(RTriTupleTable *R) int i,k; scanf(%d %d %d,&
9、R-m,&n,&t); R-RowTab1=0; k=1; /k指示当前输入的非零元的行号 for(i=0; ;i+) scanf(%d %d %d, , ,&datai.v); while(kdata=bt1-data;rchild=f32(bt1-lchild); bt2-lchild=f32(bt1-rchild); return bt2; (1)33假设有向图采用邻接表表示法,其定义如下: typedef struct VertexNode adjlistMaxVertexNum;int n,e; /图的当前顶点数和弧数 ALGraph; /邻接表类型其中顶点表结点VertexNode
10、结构为:边表结点EdgeNode结构为: 下列算法f33的功能是,对以邻接表表示的有向图进行拓扑排序。 (1)阅读算法f33,并在空缺处填入合适的内容,使其成为一个完整的算法; (2)对于如图所示的邻接表,将执行算法f33后的topo 结果填入给定的数组中。 void f33(ALGraph G, int topo ) int i,j,k,count=0; int indegreeMaxVertexNum; EdgeNode *p; /p为指向边表结点的指针 Queue Q; /Q为队列 FindIndegree(G, indegree); /求各顶点的入度,并置于入度向量indegree InitQueue(&Q);inext) k=p-adjvex;(-indegreek) ; if(countG. n)printf(n图G中存在有环路);(1)(2) topo五、算法设计题(本大题10分)34假设以带头结点的单链表表示有序表,单链表的类型定义如下: typedef struct node DataType data; struct node *next LinkNode, *LinkList; 编写算法,从有序表A中删除所有和有序表B中元素相同的结点。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1