西南财经大学电子商务学院

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

密2009-2010-1学期第1页共4页西南财经大学天府学院试卷(B卷)考试科目:数据结构_本年级层次教学班姓名:学号:记分表试题号一二三四五六总分考分阅卷人注意:1、本次考试为A卷考试,考试时间120分钟。2、请将答案依次写在专用答题纸上。3、全卷共一部分,满分为100分。一、单项选择题(共15题,每题2分,共计30分)1、在数据结构学科中,伪代码是()A、描述算法且容易理解的一种语言B、能够方便描述算法中的分支与循环等结构化语句C、不能直接编译或解释执行D、以上都正确2、若进栈序列为1、2、3、4,进栈过程中可以出栈,则以下不可能的出栈序列是()A、1、4、3、2B、2、3、4、1C、3、1、4、2D、3、4、2、13、设语句x++的时间是单位时间,则以下语句的时间复杂度为()。for(i=1;i=n;i++)for(j=1;j=n;j++)x++;A、O(1)B、O(n2)C、O(n)D、O(n3)4、假定一个链表队列的队首和队尾指针分别用front和rear表示,每个结点的结构为:当出队时所进行的指针操作为()A、front=front–nextB、rear=rear–nextC、front–next=rear;rear=rear–nextD、front=front–next;front–next=rear5、向一个栈顶指针为hs的链栈中插入一个s结点时,应执行()。A、hs-next=s;B、s-next=hs;hs=s;C、s-next=hs-next;hs-next=s;D、s-next=hs;hs=hs-next;6、对于顺序存储的有序表{5,12,20,26,37,42,46,50,64},若采用折半查找,则查找元素26的比较次数为()。A、2B、3C、4D、57、对一组数据(86,48,26,15,23)排序,数据的排列次序在排序过程中的变化为:①8648261523②1548268623③1523268648④1523264886这个排序过程采用的排序方法是()。A、冒泡B、选择C、快速D、插入8、若根据查找表(23,44,36,48,52,73,64,58)建立哈希表,采用h(K)=K%7计算哈希地址,则哈希地址等于3的元素个数为()。A、1B、2C、3D、49、若一个元素序列基本有序,则选用()方法较快。A、直接插入排序B、简单选择排序C、堆排序D、快速排序10、在一个长度为n的顺序表中向第i个元素(0in+1)之前插入一个新元素时,需要向后移动()个元素。A、n-iB、n-i+1C、n-i-1D、i11、下面关于线性表的说法正确的是().datanext第2页共3页A、每个元素都有一个直接前趋和一个直接后继B、线性表中至少要有一个元素C、表中各元素的排列顺序必须是由小到大或由大到小D、除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前趋和直接后继12、在数据结构中,从逻辑上可以把数据结构分为()。A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构13、已知函数SubString(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数SCopy(s,t)的功能为复制串t到s。若字符串S=”SCIENCESTUDY”,则调用函数SCopy(P,Sub(S,1,7))后得到()。A、P=”SCIENCE”B、P=”STUDY”C、S=”SCIENCE”D、S=”STUDY”14、若将一个10×10阶的对称矩阵压缩存储到一个一维数组中,则该一维数组的大小应该是()。A、55B、56C、45D、4615、线索二叉树中,结点p没有左子数的充要条件是()。A、p-lc=NULLB、p-ltag=1C、p-lc=NULL且p-ltag=1D、以上都不对二、是非题(下列叙述正确的写上T,否则,写上F。共10题,每题1分,共计10分)1、在有向图G中,V2,V1和V1,V2是两条不同的边。()2、线性表中的每个结点最多只有一个前驱和一个后继。()3、线性表简称为“顺序表”。()4、线性的数据结构可以顺序存储,也可以链式存储。非线性的数据结构只能连接存储。()5、从单链表的任一结点出发,都能访问到所有结点。()6、在有序的顺序表和有序的链表上,均可使用折半查找来提高查找效率。()7、如果某种排序方法是不稳定的,那么该排序方法不具有实用价值。()8、满二叉树一定是完全二叉树。()9、若二叉树的中序遍历序列与后序遍历序列相同,则该二叉树一定是任何结点都没有右子树。()10、数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。()三、填空题(共10空,每空1分,共计10分)1、队列和堆栈最大的相同点在于,它们都同属于【1】;队列和栈最大的不同点在于,队列元素的删除和插入遵循【2】规则;而栈元素的删除和插入遵循后进先出(LIFO)规则。2、如果经常对线性表进行插入和删除运算,则最好采用【3】存储结构。3、已知二维数组A[5][3],其每个元素占2个存储单元,并且A[0][0]的存储地址为1000。则元素A[3][2]的存储地址为【4】。4、假定一个顺序循环队列的存储空间长度为QueueSize,队首和队尾指针分别用front和rear表示,如果采用少用一个存储空间的方式来区分循环队列是队空还是队满,则判断队空的条件是【5】;判断队满的条件是【6】。5、数据结构按结点间的关系,可分为4中逻辑结构,它们分别是【7】、【8】、【9】和【10】。四、算法填空题(每空2分,共20分)1、已知二叉树中的结点类型BinTreeNode定义为:structBinTreeNode{ElemTypedata;BinTreeNode*left,*right;};其中data为结点值域,left和right分别为指向左、右子女结点的指针域。下面函数的功能是返回二叉树BT中值为X的结点所在的层号,请在画有横线的地方填写合适内容。intNodeLevel(BinTreeNode*BT,ElemTypeX){intc1,c2;第2页共3页if(BT==NULL)return0;/*空树的层号为0*/elseif(BT-data==X)return1;/*根结点的层号为1*/else{c1=NodeLevel(BT-left,X)if(c1=1)returnc1+1;c2=【1】;if(【2】)return【3】;elsereturn0;/*若树中不存在X结点则返回0*/}}2、下列算法片段是矩阵快速转置算法,请在划线的位置填入适当的内容。#defineARRAYSIZE1024typedefstruct{introw,col;/*非零元素的行号和列号*/DataTypevalue;/*非零元素的值*/}TriType;typedefstruct{triTypeitems[ARRAYSIZE+1];/*非零元三元组,item[0]未用*/introws,cols;/*稀疏矩阵的行数、列数*/intnums;/*稀疏矩阵的非零元素个数*/}TriArray;FastTransMatrix(TriArrayTA,TriArrayTB){/*TA为转置前的三元组属性表,TB为转置后的三元组顺序表*/inti,j=0,k=0;intpos[ARRATSIZE+1],num[ARRATSIZE+1];if(TA.nums){for(i=1;i=TA.cols;i++)num[i]=0;for(i=1;i=TA.nums;i++)/*求TA中每一列非零元个数*/【4】;pos[1]=1;for(i=2;i=TA.cols;i++)/*计算第i列第一个非零元的位置【5】;for(i=1;i=TA.nums;i++){j=TA.items[i].col;k=pos[j];TB.items[k].row=TA.items[i].col;TB.items[k].col=TA.item[i].row;TB.items[k].value=TA.items[i].value;【6】;}}TB.rows=TA.cols;TB.cols=TA.rows;}2、下列算法片段预实现的功能是:对有序表ST进行折半查找,成功时返回记录在表中的位置,失败时返回0。请在划线的位置填入适当的内容。typedefstruct{keytypekey;}ElemType;typedefstruct{第2页共3页ElemType*elem;/*数据元素存储空间基址,建表时按实际长度分配,0号空间留空*/intlength;/*表长度*/}SSTable;intSearch_Bin(SSTableST,keytypekey){/*在表R中查找关键字k*/intlow=1,high=ST.length;while(【7】){mid=(low+high)/2;if(key=ST.elem[mid].key)return【8】;/*找到待查元素*/elseif(keyST.elem[mid].key)【9】;/*继续在前一半查找*/else【10】;/*继续在后一半查找*/}return0;/*顺序表中不存在待查元素*/}五、算法应用题(共15分)1、模式匹配的KMP算法应用设目标为s=”abcaabbabcabaacbacba”,模式p=”abcabaa”。(1)计算模式p的next[j]函数值。(3分)(2)不写出KMP算法,只画出采用next[j]函数进行模式匹配时每一趟的匹配过程。(2分)2、若一棵二叉树后序遍历为DHEBFIGCA,中序遍历序列为DBEHAFCIG。试画出这棵二叉树。(5分)3、对于给定的一组记录的关键字{23,13,17,21,30,60,58,28,30,90}。试写出采用冒泡排序和快速排序方法时,每一趟排序后的结果。(10分)六、算法设计题(共10分)设线性表存放于顺序表A中,其中有n个整型元素,且递增有序,请设计一算法,将整型元素x插入到线性表的适当位置,以保持线性表的有序性。给出该算法的时间复杂度,并用C语言表示出线性表L和顺序表A。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功