数据结构期末考试试题--课题练习用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构考试试卷
课程名称:数据结构;试卷类型:A考试时间:120
一、判断题(每题1分,共10分,正确划“√”,错误划“×”)() 1、算法分析的两个主要方面是空间复杂度和时间复杂度。
()2、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
()3、栈和队列是两种重要的线性结构。
()4、用一维数组存放二叉树时,总是以前序遍历顺序存储结点。
()5、存在这样的二叉树,对它采用任何次序的遍历,结果相同。
( ) 6、在n个结点的无向图中,若边数 > n-1,则该图必是连通图。
()7、若一个图的邻接矩阵为对称矩阵,则该图必为无向图。
()8、任何无环的有向图,其结点都可以排在一个拓扑序列里。
()9、在哈希表中,若装填因子越大,则发生冲突的机会越少。
()10、堆排序的时间复杂度为O(n)。
二、填空题(每题2分,共20分)
1、数据的逻辑结构可形式化地用一个二元组B=(K,R)来表示,其中K是数据元素的有限集 ,R是K上关系的有限集。
2、在一个长度为n的向量中在第i(1≤i≤n)个元素之前插入一个元素时,需向后移动n-i 个元素。
3、用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1,2,3,4, 为了得到1,3,4,2出栈顺序相应的S和X操作串为____sxssxsxx。
4、假设以列优先顺序存储二维数组A[5][8],其中元素A[0][0]的存储地址为LOC(a00),且每个元素占4个存储单元,则数组元素A[i][j]的存储地址为。
5、在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于。
6、遍历图的基本方法有深度优先搜索和广度优先搜索。
7、有序表(05,13,19,21,37,56,64,75,80,88,92)中,折半查找21时,其关键码的比较次数为。
8、直接插入排序是稳定的,它的时间复杂度为。
9、二叉树通常有顺序存储结构和链式存储结构。
10、对无向图,若它有n个顶点e条边,则其邻接表中需要个结点。
三、单项选择题(每题2分,共20分)
1、如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是( c )。
A. 栈
B. 队列
C. 树
D. 图
2、下面程序段的时间复杂度为(c)。
for (i=0; i for (j=0; j A[i][j]=i*j; A. O (m2) B. O (n2) C. O (m*n) D. O (m+n) 3、带头结点的单链表head为空的判定条件是(b )。 A. head = = NULL; B. head->next = = NULL; C. head->next = = head; D. head! = NULL; 4、判断一个循环队列QU(m0为最大队列长度(以元素为单位),front和rear分别为队列的队头指针和队尾指针)为空队列的条件是( b )。 A.QU->front==QU->rear B.QU->front!=QU-> rear C.QU->front==(QU->rear+1) % m0 D.QU->front!=(QU->rear+1) % m0 5、下列广义表中,长度为2的有( 4 )。 A=(a,b) B=((c,(a,b)),d) C=(c,(a,b)) D=((a,b) ,(c,(a,b))) ① A ② A,C ③ A,B ④ A,B,C,D 6、已知一棵含50个结点的二叉树中只有一个叶子结点,则该树中度为1的 结点个数为( d) A. 0 B. 1 C. 48 D. 49 7、设a、b为一棵二叉树上的两个结点。在中序遍历时,a在b前面的条件是 b 。 A.a在b的右方 B. a在b的左方 C. a是b的祖先 D. a是b的子孙 8、在一个具有n个顶点的有向图中,所有顶点的出度之和为D out,则所有顶点的入度之和为() A. D out B. D out-1 C. D out+1 D. n 9、n个顶点的有向完全图具有条边。 A.n(n-1)/4 B. n(n-1)/2 C. n(n-1) D. n(n+1) 10、一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为。 A.79,46,56,38,40,80 B.84,79,56,38,40,46 C.84,79,56,46,40,38 D.84,56,79,40,46,38 四、简答题(每题5分,共30分) 1、某通讯系统只可能有A、B、C、D、E、F 6种字符,其出现的概率分别是0.1、0.4、0.04、0.16、0.19、0.11,试画出哈夫曼树,并设计哈夫曼编码。 2、指定Hash函数H(k)=3*kmod11及线性探测开放地址法处理冲突,试在0~10的散列空间中对关键字序列(22,41,53,46,30,13,01,67)构造哈希表,并求在等概率下查找成功的平均查找长度。 3、已知线性表的存储结构为顺序表,阅读下列算法,并回答问题: 读算法f 30,并回答下列问题: (1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态; (2)简述算法f30的功能。 void f30 (SeqList *L) { int i,j; for (i=j=0;i if(L->data[i]>=0){ if(i!=j)L->data[j]=L->data[i]; j++; } L->length=j; } (1) (2) 4、设文件中各记录的关键码为{49,38,65,97,76,13,27}。欲用快速排序算法将其按关键码从小到大排序。请写出每一趟的排序结果。 5、已知无向图G的邻接表如图1所示,请画出该无向图,并写出从V1出发按广度优先搜索时的访问序列。其中nil表示空。