07年自考数据结构真题及答案.docx
- 文档编号:8027245
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:11
- 大小:231.85KB
07年自考数据结构真题及答案.docx
《07年自考数据结构真题及答案.docx》由会员分享,可在线阅读,更多相关《07年自考数据结构真题及答案.docx(11页珍藏版)》请在冰豆网上搜索。
07年自考数据结构真题及答案
更多试卷答案下载
免费试听网校课程
全国2007年10月高等教育自学考试
数据结构试题
课程代码:
02331
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下面程序段的时间复杂度为(D)
s=0;
for(i=1;i for(j=1;j s+=i*j; A.O (1)B.O(logn) C.O(n)D.O(n2) 2.已知指针p和q分别指向某单链表中第一个结点和最后一个结点。 假设指针s指向 另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为(A) A.q->next=s->next;s->next=p;B.s->next=p;q->next=s->next; C.p->next=s->next;s->next=q;D.s->next=q;p->next=s->next; 3.在计算机内实现递归算法时所需的辅助数据结构是(A) A.栈B.队列 C.树D.图 4.假设以数组A[m]存放循环队列的元素。 已知队列的长度为length,指针rear指向队 尾元素的下一个存储位置,则队头元素所在的存储位置为(B) A.(rear-length+m+1)%mB.(rear-length+m)%m C.(rear-length+m-1)%mD.(rear-length)%m 5.通常将链串的结点大小设置为大于1是为了(B) A.提高串匹配效率B.提高存储密度 C.便于插入操作D.便于删除操作 6.带行表的三元组表是稀疏矩阵的一种(A) A.顺序存储结构B.链式存储结构 C.索引存储结构D.散列存储结构 7.表头和表尾均为空表的广义表是(B) A.()B.(()) C.((()))D.((),()) 8.用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为(C) (P75具有n个结点的二叉树的二叉链表表示中,一共有2n个指针域,其中n-1个用来指示结点的左、右孩子,其余的n+1个指针域为空) A.n-1B.n C.n+lD.2n 9.为便于判别有向图中是否存在回路,可借助于(D) A.广度优先搜索算法B.最小生成树算法 C.最短路径算法D.拓扑排序算法 10.连通网的最小生成树是其所有生成树中(D) A.顶点集最小的生成树B.边集最小的生成树 C.顶点权值之和最小的生成树D.边的权值之和最小的生成树 11.按排序过程中依据的原则分类,快速排序属于(C) A.插入类的排序方法B.选择类的排序方法 C.交换类的排序方法D.归并类的排序方法 12.下列关键字序列中,构成小根堆的是(C) (P152小根堆指根结点的关键字是树中所有结点关键字中最小的) A.{84,46,62,41,28,58,15,37} B.{84,62,58,46,41,37,28,15} C.{15,28,46,37,84,41,58,62} D.{15,28,46,37,84,58,62,41} 13.在长度为32的有序表中进行二分查找时,所需进行的关键字比较次数最多为(C) A.4B.5 C.6D.7 14.假设在构建散列表时,采用线性探测解决冲突。 若连续插入的n个关键字都是同义 词,则查找其中最后插入的关键字时,所需进行的比较次数为(B) A.n-1B.n C.n+lD.n+2 15.散列文件也称为(C) A.顺序文件B.索引文件 C.直接存取文件D.间接存取文件 二、填空题(本大题共10小题,每小题2分,共20分) 请在每小题的空格中填上正确答案。 错填、不填均无分。 16.数据的逻辑结构描述数据元素之间的_______逻辑关系__________,与存储方式无关。 17.在一个长度为100的顺序表中删除第10个元素时,需移动________90___________个元素。 18.队列的队尾位置通常是随着______入队________操作而变化的。 19.两个空串联接得到的串的长度为_______0____________。 20.设对称矩阵A压缩存储在一维数组B中,其中矩阵的第一个元素a11存储在B[0],元素a52存储在B[11],则矩阵元素a36存储在B[______17________]中。 21.已知一棵哈夫曼树含有60个叶子结点, 则该树中共有_________59_______个非叶子结点。 22.如图所示的有向图中含有 ________2_______个强连通分量。 23.已知一组关键字为{15,36,28,97,24,78,47,52,13,86},其中每相邻两个关键字构成一个有序子序列。 对这些子序列进行一趟两两归并的结果是_{15,28,36,97,24,47,52,78,13,86}_____________。 24.从空树起,依次插入关键字1l,27,35,48,52,66和73构造所得的二叉排序树,在等概率查找的假设下,查找成功时的平均查找长度为_____4_______________。 25.控制区间和控制区域是______VSAM__________文件的逻辑存储单位。 三、解答题(本大题共4小题,每小题5分,共20分) 26.利用广义表的head和tail操作,可从广义表 L=((a,b),(c,d)) 中分解得到原子c,其操作表达式为 head(head(tail(L))); 分别写出从下列广义表中分解得到b的操作表达式。 (1)L1=(a.,b,c,d); (2)L2=(((a),(b),(c),(d)))。 (1)head(tail(L1)) (2)head(head(tail(head(L3)))) (P67取表头head(LS),取表尾tail(LS)) 27.画出与如图所示森林对应的二叉树。 (左边是孩子右边是兄弟) 28.已知有向图G的定义如下: G=(V,E) V={a,b,c,d,e} (1)画出G的图形; (2)写出G的全部拓扑序列。 (1) (2)abecd eabcd aebcd 29.已知3阶B-树如图所示。 (1)画出将关键字88插入之后的B-树; (2)画出将关键字47和66依次插入之后的B-树。 (1) (2) 四、算法阅读题(本大题共4小题,每小题5分,共20分) 30.假设某个不设头指针的无头结点单向循环链表的长度大于1,s为指向链表中某个结点的指针。 算法f30的功能是,删除并返回链表中指针s所指结点的前驱。 请在空缺处填入合适的内容,使其成为完整的算法。 typedefstructnode{ DataTypedata; structnode*next; }*LinkList; DataTypef30(LinkLists){ LinkListpre,p; DataTypee; pre=s; p=s->next; while(p->next! =s){ pre=p; _________p=p->next__; } pre->next=s(或p->next); e=p->data; free(p); returne; } (1) (2) (3) 31.算法f31的功能是清空带头结点的链队列Q。 请在空缺处填入合适的内容,使其成为一个完整的算法。 typedefstructnode{ DataTypedata; structnode*next; }QueueNode; typedefstruct{ QueueNode*front;//队头指针 QueueNode*rear;//队尾指针 }LinkQueue; voidf31(LinkQueue*Q){ QueueNode*p,*s; p=Q->front->next; while(p! =NULL){ s=p; p=p->next; free(s); ________Q->front->next=NULL; Q->rear=_______Q->front_______; } (1) (2) (3) 32.假设采用动态存储分配的顺序串HString作为串的存储结构。 该类型实现的串操作函数原型说明如下: voidstrinit(HStrings);//置s为空串 intstrlen(HStrings);//求串s的长度 voidstrcpy(HStringto,HStringfrom);//将串from复制到串to voidstrcat(HStringto,HStringfrom);//将串from联接到串to的末尾 intstrcmp(HStringsl,HStrings2); //比较串sl和s2的大小,当s1 //返回值小于0,等于0或大于0 HStringsubstr(HStrings,inti,intm); //返回串s中从第i(0≤I≤strlen(s)-m)个字符起长度为m的子串 阅读下列算法f32,并回答问题: (1)设串S=″abcdabcd″,T=″bcd″,V=″bcda″,写出执行f32(S,T,V)之后的S; (2)简述算法f32的功能。 voidf32(HStringS,HStringT,HStringV){ intm,n,pos,i; HStringnews; strinit(news); n=strlen(S); m=strlen(T); pos=i=0; while(i<=n-m){ if(stremp(substr(S,i,m),T)! =0)i++; else{ strcat(news,substr(S,pos,i-pos)); strcat(news,V); pos=i=i+m; } } strcat(news,substr(S,pos,n-pos)); strcpy(S,news) } (1)S=”abcdaabcda” (2)串的置换操作,用串V置换串S中的子串T 33.假设以二叉链表作为二叉树的存储结构,其类型定义如下: typedefstructnode{ chardata; structnode*lchild,*rchild;//左右孩子指针 }BinTNode,*BinTree; 阅读下列算法f33,并回答问题: (1)已知如图所示的二叉树以T为指向根结点的指针,画出执行f33(T)后的二叉树; (2)简述算法f33的功能。 voidf33(BinTreeT){ if(T){ f33(T->lchild); f33(T->rchild); if((! T->lchild)&&T->rchild){ T->lchild=T->rchild; T->rchild=NULL; } } } (1) (2) (2)对二叉树的每个结点,如果其左孩子为空(右孩子不为空),则将其有孩子设置为左孩子 五、算法设计题(本大题10分) 34.假设以带头结点的单链表表示有序表,单链表的类型定义如下: typedefstructnode{ intdata; structnode*next; }LinkNode,*LinkList; 编写算法,输入n个整数构造一个元素值互不相同的递增有序链表(即相同的整数只取一个)。 算法的函数原型给定为 LinkListf34(intn); LinkListf34(intn){ LinkListL,p,q,s;-------------//初始化2分 inte,i; L=(LinkList)malloc(sizeof(LinkNode)); L->next=NULL; for(i=1;i<=n;i++){----------//循环架构1分 scanf(“%d”,&e);---------//输入及查找准备2分 p=L; q=p->next; while(q&&q->data p=q; q=q->next; } if(! q||q->data>e){--------------//插入2分 s=(LinkList)malloc(sizeof(LinkNode)); s->data=e; s->next=q; p->next=s; } } returnL;--------------//返回1分 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 自考 数据结构 答案