数据结构考试试题总结doc[精选合集]

时间:2019-05-12 01:48:31下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《数据结构考试试题总结doc》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《数据结构考试试题总结doc》。

第一篇:数据结构考试试题总结doc

数据结构考试模拟题(单独整理)

一、选择题

1.以下结构中逻辑结构不是线性结构的是()A 栈B 队列 C串 D线索二叉树

2.如下算法的最坏时间复杂度为()for(i=n-1;i>=1;--i)for(j=1;ja[j+1])a[j]与a[j+1]对换;其中n为正整数。

A 0(n)

B 0(nlogn)

C 0(n^2)D 0(n^3)

3.下列说法错误的是()

A采用顺序存储占用一片连续ide存储空间,可随机存取

B采用链式存储在进行插入和删除错做是不需要移动元素,但只能顺序访问各元 C满二叉树采用顺序存储结构会浪费大量存储时间 D3阶B-树中节点内关键字的个数为1或者2

4.设指针变量p指向单链表节点A,则删除节点A的后继结点B需要的操作为()A

p->next=p->next->next B

p=p->next C

p=p->next->next D

p->next=p

5.设入栈序列为123,则可能的出栈序列不包括()A 123 B 132

C 213

D 312

6.某二叉树有n各叶子节点,且当中不存在度为1的节点,则该二叉树中共有()A(n-1)/2

B(n+1)/2

C 2n-1

D 2n+1

7.对于一个具有n各顶点和e条边的无向图,若采用邻接表存储结构进行表示,则除去链表中表节点(弧节点)的数目为()A e/2 B e

C 2e

D n+e

8.对于含n个顶点的带权有向图G,下列说法错误的是()A拓扑排序可用于检查图G中是否存在有向回路 B关键路径是源点到汇点的最短路径

C位于关键路径上的任意活动的延期大都将影响整个工程的进度 D只需执行一次Floyd算法,便可求出任意一对顶点间的最短距离

9.以下关于这边查找的说法错误的是()

A折半查找算法宜在有序顺序表上实现,而不宜在有序单链表上实现 B折半查找的判定树一定是二叉排序树 C折半查找的判定树一定是满二叉树 D折半查找的判定树一定是平衡二叉树

10.下列排序算法中时间复杂度不受数据初始状态影响而恒为0(n logn)的是()A 直接插入排序

B 冒泡排序

C 归并排序

D 快速排序

11.以下排序方法中稳定的是()

A 希尔排序

B基数排序

C 堆排序

D快速排序

二、填空题

1.长度为n的有序顺序表中进行顺序排序查找的时间复杂度为_________,折半查找的时间复杂度为__________;2. 双向循环链表中结点的指针域为prior和next,一直指针变量p指向双向循环链表某结点指向一新节点,将s所致结点插入到p所指结点后面的语句序列s->next=->next:_____________:____________:p->next=s;3.顺序栈S的栈底指针为S.base,栈顶指针为S.top,栈空的判定条件是________.4.设循环队列Q分配有M个存储单元,Q.front和Q.rear分别为队投缘苏下表和队尾元素下标,则循环队列队满的判定条件是_____________;5.已知n*n阶上三角矩阵A,矩阵元素的行、列下标为1……n,将其上三角元素逐行存储于一维数组S中(从0号单元开始存储),则对角线元素aii在数组S自己拍卖会对应元素的下标为____________;6对于下图所示的树,其对应的二叉树所含叶节点数为________;

7.设权值集合W=(15,3,2,6,9),据此所得Huffman数的带权路径长度为___________;8.有向图G中边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},则该图的一个拓扑序列为_____;9.设一组记录的关键字序列为(34,76,45,18,26,54,92),则由这组记录关键字生成的二叉排序树的深度为_________; 补全算法:输入十进制整数n,将其转换为八进制整数

Void conversion(){ Scanf(“%d”,n);InitStack(S);While(n!=0){ ________;n=n/8;} }

三、应用题

1.设二叉树线序序列为ABDEFCGHI,中序序列为DBFEAGHCI,画出该二叉树,并给出后序序列

2.图的邻接矩阵如下所示,分别画出出自顶点A出发进行遍历所得的深度优先生成树和广度优先生成树,假设邻接点按由小到大的顺序排列

3设一组初始记录关键字集合为(25,17,15,27,32,68),散列表的长度为7,散列函数H(k)=k mod 7,要求分别用线性探测和连地址法作为解决冲突的方法构造哈希表,并求平均查找长度。

4设初始记录关键字序列为(20,18,22,16,30,19),现对其由小到大进行排序,写出快速排序时以20为枢轴进行一趟快速排序后的结果:并画出堆排序时初始大顶堆对应的二叉树。

四、算法设计题 要求:(1)用自然语言说明所采用算法的思想

(2)给出每个算法所设计的存储结构定义,并作必要的注释或说明;(3)用C语言或伪代码写出对应的算法程序,并做必要的注释。

1、二叉树采用二叉链表存储结构,设计算法统计二叉树的深度。

2、已知集合A与集合B中的元素分别以递增的顺序结构在但联保La和Lb中,求A U B 并将结果存入单链表Lc中。要求Lc中的元素也递增排序,且个链表均带头结点。

ps:根据勇哥的photos整理,部分地方有纰漏,请指出并上传修订版

第二篇:数据结构试题及答案

数据结构试卷

(二)一、选择题(24分)1.下面关于线性表的叙述错误的是()。

(A)线性表采用顺序存储必须占用一片连续的存储空间

(B)线性表采用链式存储不必占用一片连续的存储空间(C)线性表采用链式存储便于插入和删除操作的实现(D)线性表采用顺序存储便于插入和删除操作的实现

2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。

(A)2m-1(B)2m(C)2m+1(D)4m 3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()。

(A)R-F(B)F-R(C)(R-F+M)%M(D)(F-R+M)%M 4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为()。

(A)BADC(B)BCDA(C)CDAB(D)CBDA 5.设某完全无向图中有n个顶点,则该完全无向图中有()条边。

(A)n(n-1)/2(B)n(n-1)(C)n

2(D)n2-1 6.设某棵二叉树中有2000个结点,则该二叉树的最小高度为()。

(A)9(B)10(C)11(D)12 7.设某有向图中有n个顶点,则该有向图对应的邻接表中有()个表头结点。

(A)n-1(B)n(C)n+1(D)2n-1 8.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为()。

(A)2,3,5,8,6(B)3,2,5,8,6(C)3,2,5,6,8(D)2,3,6,5,8

二、填空题(24分)1.1.为了能有效地应用HASH查找技术,必须解决的两个问题是____________________和__________________________。

2.2.下面程序段的功能实现数据x进栈,要求在下划线处填上正确的语句。

typedef struct {int s[100];int top;} sqstack;void push(sqstack &stack,int x){ if(stack.top==m-1)printf(“overflow”);

else {____________________;_________________;} } 3.3.中序遍历二叉排序树所得到的序列是___________序列(填有序或无序)。4.4.快速排序的最坏时间复杂度为___________,平均时间复杂度为__________。5.5.设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为2的结点数为_________;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有_______个空指针域。

6.6.设某无向图中顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=_______。

7.7.设一组初始记录关键字序列为(55,63,44,38,75,80,31,56),则利用筛选法建立的初始堆为___________________________。

v1324v213v31428.8.设某无向图G的邻接表为v413,则从顶点V1开始的深度优先遍历序列为___________;广度优先遍历序列为____________。

三、应用题(36分)1. 1. 设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果。

2. 2. 设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。

3. 3. 设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。

4. 4. 设一棵树T中边的集合为{(A,B),(A,C),(A,D),(B,E),(C,F),(C,G)},要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。5. 5. 设有无向图G(如右图所示),要求给出用普里姆算法构造最小生成树所走过的边的集合。

6. 6. 设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。

数据结构试卷

(二)参考答案

一、选择题 1.D 2.B 3.C 4.A 5.A 6.C 7.B 8.C

二、填空题

1.1.构造一个好的HASH函数,确定解决冲突的方法 2.2.stack.top++,stack.s[stack.top]=x 3.3.有序

4.4.O(n2),O(nlog2n)5.5.N0-1,2N0+N1 6.6.d/2 7.7.(31,38,54,56,75,80,55,63)8.8.(1,3,4,2),(1,3,2,4)

三、应用题

1.1.(22,40,45,48,80,78),(40,45,48,80,22,78)2.2.q->llink=p;q->rlink=p->rlink;p->rlink->llink=q;p->rlink=q;3.3.2,ASL=91*1+2*2+3*4+4*2)=25/9 4.4.树的链式存储结构略,二叉树略

5.5.E={(1,3),(1,2),(3,5),(5,6),(6,4)} 6.6.略

数据结构试卷

(三)一、选择题(30分)1.设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是()。

(A)线性结构(B)树型结构(C)物理结构(D)图型结构 2.下面程序的时间复杂为()

for(i=1,s=0; i<=n; i++){t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}(A)O(n)(B)O(n2)(C)O(n3)(D)O(n4)3.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。

(A)q=p->next;p->data=q->data;p->next=q->next;free(q);(B)q=p->next;q->data=p->data;p->next=q->next;free(q);

(C)q=p->next;p->next=q->next;free(q);

(D)q=p->next;p->data=q->data;free(q);

4.设有n个待排序的记录关键字,则在堆排序中需要()个辅助记录单元。

(A)1(B)n(C)nlog2n(D)n2

5.设一组初始关键字记录关键字为(20,15,14,18,21,36,40,10),则以20为基准记录的一趟快速排序结束后的结果为()。(A)10,15,14,18,20,36,40,21(B)10,15,14,18,20,40,36,21(C)10,15,14,20,18,40,36,2l(D)15,10,14,18,20,36,40,21 6.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为()。(A)O(1)(B)O(log2n)(C)(D)O(n)7.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为()。

(A)n,e(B)e,n(C)2n,e(D)n,2e 8.设某强连通图中有n个顶点,则该强连通图中至少有()条边。

(A)n(n-1)(B)n+1(C)n(D)n(n+1)9.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列()方法可以达到此目的。

(A)快速排序(B)堆排序(C)归并排序(D)插入排序 10.下列四种排序中()的空间复杂度最大。

(A)插入排序(B)冒泡排序(C)堆排序(D)归并排序

二、填空殖(48分,其中最后两小题各6分)1.1.数据的物理结构主要包括_____________和______________两种情况。

2.2.设一棵完全二叉树中有500个结点,则该二叉树的深度为__________;若用二叉链表作为该完全二叉树的存储结构,则共有___________个空指针域。

3.3.设输入序列为1、2、3,则经过栈的作用后可以得到___________种不同的输出序列。

4.4.设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的________,第i列上所有元素之和等于顶点i的________。

5.5.设哈夫曼树中共有n个结点,则该哈夫曼树中有________个度数为1的结点。6.6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为_________。

7.7.__________遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。

8.8.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较________次就可以断定数据元素X是否在查找表中。

9.9.不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为____________。

10.10.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为____________,右孩子结点的编号为___________。11.11.设一组初始记录关键字为(72,73,71,23,94,16,5),则以记录关键字72为基准的一趟快速排序结果为___________________________。

12.12.设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},则该图的一种拓扑序列为____________________。

13.13.下列算法实现在顺序散列表中查找值为x的关键字,请在下划线处填上正确的语句。

struct record{int key;int others;};int hashsqsearch(struct record hashtable[ ],int k){ int i,j;j=i=k % p;while(hashtable[j].key!=k&&hashtable[j].flag!=0){j=(____)%m;if(i==j)return(-1);}

if(_______________________)return(j);else return(-1);} 14.14.下列算法实现在二叉排序树上查找关键值k,请在下划线处填上正确的语句。

typedef struct node{int key;struct node *lchild;struct node *rchild;}bitree;bitree *bstsearch(bitree *t, int k){

if(t==0)return(0);else while(t!=0)if(t->key==k)_____________;else if(t->key>k)t=t->lchild;else_____________;}

数据结构试卷

(三)参考答案

一、选择题

1.B 2.B 3.A 4.A 5.A 6.B 7.D 8.C 9.B 10.D 第3小题分析:首先用指针变量q指向结点A的后继结点B,然后将结点B的值复制到结点A中,最后删除结点B。

第9小题分析:9快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的10个数,而堆排序只需要在初始堆的基础上再进行10次筛选即可,每次筛选的时间复杂度为O(log2n)。

二、填空题

1.1.顺序存储结构、链式存储结构 2.2.9,501 3.3.5 4.4.出度,入度 5.5.0 6.6.e=d 7.7.中序 8.8.7 9.9.O(1)10.10.i/2,2i+1 11.11.(5,16,71,23,72,94,73)12.12.(1,4,3,2)13.13.j+1,hashtable[j].key==k 14.14.return(t),t=t->rchild 第8小题分析:二分查找的过程可以用一棵二叉树来描述,该二叉树称为二叉判定树。在有序表上进行二分查找时的查找长度不超过二叉判定树的高度1+log2n。

}

数据结构试卷

(四)一、选择题(30分)1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。(A)O(n)(B)O(nlog2n)(C)O(1)(D)O(n)2.设一棵二叉树的深度为k,则该二叉树中最多有()个结点。

(A)2k-1(B)2k(C)2k-1(D)2k-1 3.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为()。

(A)n(B)e(C)2n(D)2e 4.在二叉排序树中插入一个结点的时间复杂度为()。

(A)O(1)(B)O(n)(C)O(log2n)(D)O(n2)5.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。

(A)n(B)n-1(C)m(D)m-1 6.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。

(A)3(B)4(C)5(D)8 7.设用链表作为栈的存储结构则退栈操作()。

(A)必须判别栈是否为满(B)必须判别栈是否为空

(C)判别栈元素的类型(D)对栈不作任何判别 8.下列四种排序中()的空间复杂度最大。

(A)快速排序(B)冒泡排序(C)希尔排序(D)堆

9.设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是()。

(A)N0=N1+1(B)N0=Nl+N2(C)N0=N2+1(D)N0=2N1+l 10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。

(A)log2n+1(B)log2n-1(C)log2n(D)log2(n+1)

二、填空题(42分)1. 1. 设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________。

2. 2. 设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为_________________________________________________________(设结点中的两个指针域分别为llink和rlink)。3. 3. 根据初始关键字序列(19,22,01,38,10)建立的二叉排序树的高度为____________。4. 4. 深度为k的完全二叉树中最少有____________个结点。5. 5. 设初始记录关键字序列为(K1,K2,…,Kn),则用筛选法思想建堆必须从第______个元素开始进行筛选。

6. 6. 设哈夫曼树中共有99个结点,则该树中有_________个叶子结点;若采用二叉链表作为存储结构,则该树中有_____个空指针域。

7. 7. 设有一个顺序循环队列中有M个存储单元,则该循环队列中最多能够存储________个队列元素;当前实际存储________________个队列元素(设头指针F指向当前队头元素的前一个位置,尾指针指向当前队尾元素的位置)。

8. 8. 设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_______个数据元素;删除第i个位置上的数据元素需要移动表中_______个元素。9. 9. 设一组初始记录关键字序列为(20,18,22,16,30,19),则以20为中轴的一趟快速排序结果为______________________________。

10.10.设一组初始记录关键字序列为(20,18,22,16,30,19),则根据这些初始关键字序列建成的初始堆为________________________。

11.11.设某无向图G中有n个顶点,用邻接矩阵A作为该图的存储结构,则顶点i和顶点j互为邻接点的条件是______________________。

12.12.设无向图对应的邻接矩阵为A,则A中第i上非0元素的个数_________第i列上非0元素的个数(填等于,大于或小于)。

13.13.设前序遍历某二叉树的序列为ABCD,中序遍历该二叉树的序列为BADC,则后序遍历该二叉树的序列为_____________。

14.14.设散列函数H(k)=k mod p,解决冲突的方法为链地址法。要求在下列算法划线处填上正确的语句完成在散列表hashtalbe中查找关键字值等于k的结点,成功时返回指向关键字的指针,不成功时返回标志0。

typedef struct node {int key;struct node *next;} lklist;void createlkhash(lklist *hashtable[ ]){ int i,k;lklist *s;for(i=0;ikey=a[i];k=a[i] % p;s->next=hashtable[k];_______________________;} }

数据结构试卷

(四)参考答案

一、选择题

1.C 2.D 3.D 4.B 5.C 6.A 7.B 8.A 9.C 10.A

二、填空题

1.1.O(n2),O(nlog2n)2.2.p>llink->rlink=p->rlink;p->rlink->llink=p->rlink 3.3.3 4.4.2k-1 5.5.n/2 6.6.50,51 7.7.m-1,(R-F+M)%M 8.8.n+1-i,n-i 9.9.(19,18,16,20,30,22)10.10.(16,18,19,20,32,22)11.11.A[i][j]=1 12.12.等于 13.13.BDCA 14.14.hashtable[i]=0,hashtable[k]=s

数据结构试卷

(五)一、选择题(30分)

1.数据的最小单位是()。

(A)数据项(B)数据类型(C)数据元素(D)数据变量

2.设一组初始记录关键字序列为(50,40,95,20,15,70,60,45),则以增量d=4的一趟希尔排序结束后前4条记录关键字为()。

(A)40,50,20,95(B)15,40,60,20(C)15,20,40,45(D)45,40,15,20 3.设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70),其中含有5个长度为2的有序子表,则用归并排序的方法对该记录关键字序列进行一趟归并后的结果为()。

(A)15,25,35,50,20,40,80,85,36,70(B)15,25,35,50,80,20,85,40,70,36(C)15,25,35,50,80,85,20,36,40,70(D)15,25,35,50,80,20,36,40,70,85 4.函数substr(“DATASTRUCTURE”,5,9)的返回值为()。

(A)“STRUCTURE”(B)“DATA”

(C)“ASTRUCTUR”(D)“DATASTRUCTURE” 5.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为()。

(A)O(log2n)(B)O(1)(C)O(n2)(D)O(n)6.设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为Nl,……,度数为m的结点数为Nm,则N0=()。

(A)Nl+N2+……+Nm

(B)l+N2+2N3+3N4+……+(m-1)Nm(C)N2+2N3+3N4+……+(m-1)Nm(D)2Nl+3N2+……+(m+1)Nm

7.设有序表中有1000个元素,则用二分查找查找元素X最多需要比较()次。

(A)25(B)10(C)7(D)1 8.设连通图G中的边集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发可以得到一种深度优先遍历的顶点序列为()。

(A)abedfc(B)acfebd(C)aebdfc(D)aedfcb 9.设输入序列是1、2、3、……、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是()。

(A)n-i(B)n-1-i(C)n+1-i(D)不能确定 设一组初始记录关键字序列为(45,80,55,40,42,85),则以第一个记录关键字45为基准而得到一趟快速排序的结果是()。

(A)40,42,45,55,80,83(B)42,40,45,80,85,88(C)42,40,45,55,80,85(D)42,40,45,85,55,80

二、填空题(共30分)1.1.设有一个顺序共享栈S[0:n-1],其中第一个栈项指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈满的条件是____________________。

2.2.在图的邻接表中用顺序存储结构存储表头结点的优点是____________________。

3.3.设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与A[0][0]之间有_______个数据元素。

4.4.栈的插入和删除只能在栈的栈顶进行,后进栈的元素必定先出栈,所以又把栈称为__________表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为_________表。

5.5.设一棵完全二叉树的顺序存储结构中存储数据元素为ABCDEF,则该二叉树的前序遍历序列为___________,中序遍历序列为___________,后序遍历序列为___________。

6.6.设一棵完全二叉树有128个结点,则该完全二叉树的深度为________,有__________个叶子结点。

7.7.设有向图G的存储结构用邻接矩阵A来表示,则A中第i行中所有非零元素个数之和等于顶点i的________,第i列中所有非零元素个数之和等于顶点i的__________。

8.8.设一组初始记录关键字序列(k1,k2,……,kn)是堆,则对i=1,2,…,n/2而言满足的条件为_______________________________。

9.9.下面程序段的功能是实现冒泡排序算法,请在下划线处填上正确的语句。void bubble(int r[n]){ for(i=1;i<=n-1;i++){ for(exchange=0,j=0;j<_____________;j++)

if(r[j]>r[j+1]){temp=r[j+1];______________;r[j]=temp;exchange=1;} if(exchange==0)return; } } 10.10.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。struct record{int key;int others;};int bisearch(struct record r[ ], int k){

int low=0,mid,high=n-1;

while(low<=high){

________________________________;

if(r[mid].key==k)return(mid+1);else if(____________)high=mid-1;else low=mid+1;

}

return(0);}

三、应用题(24分)

1.1.设某棵二叉树的中序遍历序列为DBEAC,前序遍历序列为ABDEC,要求给出该二叉树的的后序遍历序列。2.2.设无向图G(如右图所示),给出该图的最小生成树上边的集合并计算最小生成树各边上的权值之和。

3.3.设一组初始记录关键字序列为(15,17,18,22,35,51,60),要求计算出成功查找时的平均查找长度。

4.4.设散列表的长度为8,散列函数H(k)=k mod 7,初始记录关键字序列为(25,31,8,27,13,68),要求分别计算出用线性探测法和链地址法作为解决冲突方法的平均查找长度。

数据结构试卷

(五)参考答案

一、选择题 1.A 2.B 3.A 4.A 5.D 6.B 7.B 8.B 9.C 10.C

二、填空题

1.1.top1+1=top2 2.2.可以随机访问到任一个顶点的简单链表

3.3.i(i+1)/2+j-1 4.4.FILO,FIFO 5.5.ABDECF,DBEAFC,DEBFCA 6.6.8,64 7.7.出度,入度

8.8.ki<=k2i && ki<=k2i+1 9.9.n-i,r[j+1]=r[j] 10.10.mid=(low+high)/2,r[mid].key>k

三、应用题

1.1.DEBCA 2.2.E={(1,5),(5,2),(5,3),(3,4)},W=10 3.3.ASL=(1*1+2*2+3*4)/7=17/7 4.4.ASL1=7/6,ASL2=4/3

数据结构试卷

(六)一、选择题(30分)1. 设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为()。

(A)20(B)30(C)40(D)45 2.执行一趟快速排序能够得到的序列是()。

(A)[41,12,34,45,27] 55 [72,63](B)[45,34,12,41] 55 [72,63,27](C)[63,12,34,45,27] 55 [41,72](D)[12,27,45,41] 55 [34,63,72] 3.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是()。(A)head==0(B)head->next==0(C)head->next==head(D)head!=0 4.时间复杂度不受数据初始状态影响而恒为O(nlog2n)的是()。

(A)堆排序(B)冒泡排序(C)希尔排序(D)快速排序

5.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是()。

(A)空或只有一个结点(B)高度等于其结点数

(C)任一结点无左孩子(D)任一结点无右孩子

6.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是()。

(A)堆排序(B)冒泡排序(C)快速排序(D)希尔排序 7.设某棵三叉树中有40个结点,则该三叉树的最小高度为()。

(A)3(B)4(C)5(D)6 8.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为()。

21/2(A)O(n)(B)O(n)(C)O(n)(D)O(1og2n)9.二路归并排序的时间复杂度为()。(A)O(n)(B)O(n)(C)O(nlog2n)(D)O(1og2n)10.深度为k的完全二叉树中最少有()个结点。

(A)2k-1-1(B)2k-1(C)2k-1+1(D)2k-1 11.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为()。

(A)front->next=s;front=s;(B)s->next=rear;rear=s;

(C)rear->next=s;rear=s;(D)s->next=front;front=s;

12.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为()。(A)O(n+e)(B)O(n)(C)O(ne)(D)O(n)13.设某哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。

(A)99(B)100(C)101(D)102 14.设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为()。(A)O(n)(B)O(n)(C)O(nlog2n)(D)O(1og2n)15.设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

(A)第i行非0元素的个数之和(B)第i列非0元素的个数之和

(C)第i行0元素的个数之和(D)第i列0元素的个数之和

二、判断题(20分)1.调用一次深度优先遍历可以访问到图中的所有顶点。()

2.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。()3.冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。()4.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。()

5.设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。()6.层次遍历初始堆可以得到一个有序的序列。()

7.设一棵树T可以转化成二叉树BT,则二叉树BT中一定没有右子树。()8.线性表的顺序存储结构比链式存储结构更好。()

9.中序遍历二叉排序树可以得到一个有序的序列。()10.快速排序是排序算法中平均性能最好的一种排序。()

三、填空题(30分)1.for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的时间复杂度为_________。

2.设指针变量p指向单链表中结点A,指针变量s指向被插入的新结点X,则进行插入操作的语句序列为__________________________(设结点的指针域为next)。3.设有向图G的二元组形式表示为G =(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},则给出该图的一种拓扑排序序列__________。4.设无向图G中有n个顶点,则该无向图中每个顶点的度数最多是_________。5.设二叉树中度数为0的结点数为50,度数为1的结点数为30,则该二叉树中总共有_______个结点数。

6.设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为_____________________。

7.设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是_____________________________________________。8.简单选择排序和直接插入排序算法的平均时间复杂度为___________。

9.快速排序算法的空间复杂度平均情况下为__________,最坏的情况下为__________。10.散列表中解决冲突的两种方法是_____________和_____________。

数据结构试卷

(六)参考答案

一、选择题 1.D 2.A 3.A 4.A 5.D 6.D 7.B 8.A 9.C 10.B 11.C 12.A 13.B 14.D 15.B

二、判断题

1.错 2.对 3.对 4.对 5.错 6.错 7.对 8.错 9.对 10.对

三、填空题

1.1.O(n)2.2.s->next=p->next;p->next=s 3.3.(1,3,2,4,5)4.4.n-1 5.5.129 6.6.F==R 7.7.p->lchild==0&&p->rchild==0 8.8.O(n2)9.9.O(nlog2n),O(n)10.10.开放定址法,链地址法

数据结构试卷

(七)一、选择题(30分)1.设某无向图有n个顶点,则该无向图的邻接表中有()个表头结点。

(A)2n(B)n(C)n/2(D)n(n-1)2.设无向图G中有n个顶点,则该无向图的最小生成树上有()条边。

(A)n(B)n-1(C)2n(D)2n-1 3.设一组初始记录关键字序列为(60,80,55,40,42,85),则以第一个关键字45为基准而得到的一趟快速排序结果是()。

(A)40,42,60,55,80,85(B)42,45,55,60,85,80(C)42,40,55,60,80,85(D)42,40,60,85,55,80 4.()二叉排序树可以得到一个从小到大的有序序列。

(A)先序遍历(B)中序遍历(C)后序遍历(D)层次遍历

5.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为()。

(A)2i+1(B)2i(C)i/2(D)2i-1 6.程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的时间复杂度为()。(A)O(n)(B)O(nlog2n)(C)O(n)(D)O(n/2)7.设带有头结点的单向循环链表的头指针变量为head,则其判空条件是()。

(A)head==0(B)head->next==0(C)head->next==head(D)head!=0 8.设某棵二叉树的高度为10,则该二叉树上叶子结点最多有()。

(A)20(B)256(C)512(D)1024 9.设一组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利用二分法查找关键字90需要比较的关键字个数为()。

(A)1(B)2(C)3(D)4 10.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。

(A)top=top+1;(B)top=top-1;(C)top->next=top;(D)top=top->next;

三、填空题(30分)1.1.设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为_________=p;s->right=p->right;__________=s; p->right->left=s;(设结点中的两个指针域分别为left和right)。2.2.设完全有向图中有n个顶点,则该完全有向图中共有________条有向条;设完全无向图中有n个顶点,则该完全无向图中共有________条无向边。

3.3.设关键字序列为(Kl,K2,…,Kn),则用筛选法建初始堆必须从第______个元素开始进行筛选。

4.4.解决散列表冲突的两种方法是________________和__________________。

5.5.设一棵三叉树中有50个度数为0的结点,21个度数为2的结点,则该二叉树中度数为3的结点数有______个。

6.6.高度为h的完全二叉树中最少有________个结点,最多有________个结点。7.7.设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟直接插入排序结束后的结果的是__________________________________。

8.8.设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟简单选择排序结束后的结果的是__________________________________。

9.9.设一棵二叉树的前序序列为ABC,则有______________种不同的二叉树可以得到这种序列。

10.10.下面程序段的功能是实现一趟快速排序,请在下划线处填上正确的语句。

struct record {int key;datatype others;};void quickpass(struct record r[], int s, int t, int &i){

int j=t;struct record x=r[s];i=s;

while(i

while(ix.key)j=j-1;if(i

while(____________________)i=i+1;if(i

}

_________________;}

数据结构试卷

(七)一、选择题 1.B 2.B 3.C 4.B 6.A 7.C 8.C 9.B

三、填空题

1.1.s->left=p,p->right 2.2.n(n-1),n(n-1)/2 3.3.n/2 4.4.开放定址法,链地址法 5.5.14 6.6.2h-1,2h-1 7.7.(12,24,35,27,18,26)8.8.(12,18,24,27,35,26)9.9.5 10.10.i

5.B 10.D

数据结构试卷

(八)一、选择题(30分)1.1.字符串的长度是指()。

(A)串中不同字符的个数(B)串中不同字母的个数

(C)串中所含字符的个数(D)串中不同数字的个数 2.2.建立一个长度为n的有序单链表的时间复杂度为()

(A)O(n)(B)O(1)(C)O(n2)(D)O(log2n)3.3.两个字符串相等的充要条件是()。

(A)两个字符串的长度相等(B)两个字符串中对应位置上的字符相等

(C)同时具备(A)和(B)两个条件(D)以上答案都不对 4.4.设某散列表的长度为100,散列函数H(k)=k % P,则P通常情况下最好选择()。

(A)99(B)97(C)91(D)93 5.5.在二叉排序树中插入一个关键字值的平均时间复杂度为()。(A)O(n)(B)O(1og2n)(C)O(nlog2n)(D)O(n)6.6.设一个顺序有序表A[1:14]中有14个元素,则采用二分法查找元素A[4]的过程中比较元素的顺序为()。

(A)A[1],A[2],A[3],A[4](B)A[1],A[14],A[7],A[4](C)A[7],A[3],A[5],A[4](D)A[7],A[5],A[3],A[4] 7.7.设一棵完全二叉树中有65个结点,则该完全二叉树的深度为()。

(A)8(B)7(C)6(D)5 8.8.设一棵三叉树中有2个度数为1的结点,2个度数为2的结点,2个度数为3的结点,则该三叉链权中有()个度数为0的结点。

(A)5(B)6(C)7(D)8 9.9.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为()。

(A)aedfcb(B)acfebd(C)aebcfd(D)aedfbc 10.10.队列是一种()的线性表。

(A)先进先出(B)先进后出(C)只能插入(D)只能删除

三、填空题(30分)1. 1. 设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则以d=4为增量的一趟希尔排序结束后的结果为_____________________________。

2. 2. 下面程序段的功能是实现在二叉排序树中插入一个新结点,请在下划线处填上正确的内容。

typedef struct node{int data;struct node *lchild;struct node *rchild;}bitree;void bstinsert(bitree *&t,int k){ if(t==0){____________________________;t->data=k;t->lchild=t->rchild=0;} else if(t->data>k)bstinsert(t->lchild,k);else__________________________;} 3. 3. 设指针变量p指向单链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X需要执行的语句序列:s->next=p->next;_________________。4. 4. 设指针变量head指向双向链表中的头结点,指针变量p指向双向链表中的第一个结点,则指针变量p和指针变量head之间的关系是p=_________和head=__________(设结点中的两个指针域分别为llink和rlink)。

5. 5. 设某棵二叉树的中序遍历序列为ABCD,后序遍历序列为BADC,则其前序遍历序列为__________。

6. 6. 完全二叉树中第5层上最少有__________个结点,最多有_________个结点。7. 7. 设有向图中不存在有向边,则其对应的邻接矩阵A中的数组元素A[i][j]的值等于____________。

8. 8. 设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则第4趟直接选择排序结束后的结果为_____________________________。

9. 9. 设连通图G中有n个顶点e条边,则对应的最小生成树上有___________条边。10. 10. 设有一组初始记录关键字序列为(50,16,23,68,94,70,73),则将它们调整成初始堆只需把16与___________相互交换即可。

数据结构试卷

(八)参考答案

一、选择题 1.C 2.C 3.C 4.B 5.B 6.C 7.B 8.C 9.A 10.A

三、填空题

1.1.(49,13,27,50,76,38,65,97)2.2.t=(bitree *)malloc(sizeof(bitree)),bstinsert(t->rchild,k)3.3.p->next=s 4.4.head->rlink,p->llink 5.5.CABD 6.6.1,16 7.7.0 8.8.(13,27,38,50,76,49,65,97)9.9.n-1 10.10.50

第三篇:数据结构总结[推荐]

《数据结构与算法》课程学习总结报告

本学期开设的《数据结构与算法》课程已经告一段落,现就其知识点及其掌握情况、学习体会以及对该门课程的教学建议等方面进行学习总结。

一、《数据结构与算法》知识点

第一章是这门学科的基础章节,从整体方面介绍了“数据结构和算法”,同时引入相关的学术概念和术语,如数据、数据元素、数据类型以及数据结构的定义。重点是数据结构的括逻辑结构、存储结构和运算集合的含义及其相互联系。数据结构和两大逻辑结构的4四种常用存储方法;逻辑结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序存储、链接存储、索引存储和散列存储四类。难点是算法复杂度的分析方法和性能的分析。

第二章详细地分析了顺序表。介绍了顺序表的相关概念及其有关运算。基本运算有:初始化表、求表长、排序、元素的查找、插入及删除等。元素查找方法有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序及归并排序等,在各种算法思想的先分析后,要弄清各种算法的时间复杂度与空间性能的优点和缺点,在什么特定的场合适合哪种算法思想。最后介绍了顺序串的概念,顺序串是顺序表的一个特例;区别在于组成顺序串的数据元素是一组字符,其重点在于串的模式匹配。

第三章介绍链表。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高,且在存储空间上有动态申请的优点。这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。弄清其个运算的算法思想及其时间复杂度和空间性能。最后介绍了链表之中存储结构在实际中的相关应用。

第四章,堆栈是运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;堆栈在文字处理,匹配问题和算术表达式的求值问题方面的应用。

第五章,队列是一种够类似堆栈的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进先出”的规则,对堆栈的操作只能在栈顶进行;其运算有入队、出队等操作。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。

第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。其中三元组和十字链表这两种结构尤为重要;对着两种结构的建立了应用要掌握。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的表示问题。

第七章二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序,其中关于二叉排序树和哈弗曼书的构建是重点。

第八章介绍了树。树与二叉树是不同的概念。教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。

第九章,散列结构是一种查找效率很高的一种数据结构。本章的主要知识点有:散列结

构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。

最后一章介绍了图的概念及其应用,是本书的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解AOV网和拓扑排序及其算法。

二、对各知识点的掌握情况

总体来看,对教材中的知识点理解较为完善,但各个章节均出现有个别知识点较为陌生的现象,对某些具体的问题和应用仍有一些模糊与措手。各个章节出现的知识点理解和掌握情况明确一下。

第一章中我对数据和数据结构的概念理解较为透彻,熟悉数据结构的逻辑结构和存储结构。算法的时间、空间性能分析是重点,同样也是难点,尤其是空间性能分析需要加强。在某些强大与复杂的算法面前的处理有些棘手。

第二章,顺序表的概念、生成算法理解较为清晰,并且熟悉简单顺序查找和二分查找,对分块查找较为含糊。删除方面的问题比较容易些。排序问题中,由于冒泡排序在大一C语言课上已经学习过,再来学习感觉相对轻松些。对插入排序和选择排序理解良好,但是,在实际运用中仍然出现明显不熟练的现象。由于在归并排序学习中感觉较吃力,现在对这种排序方法仍然非常模糊,所以需要花较多的时间来补习。此外串的模式匹配也是较难理解的一个地方。

第三章链表中,除对双向循环链表这一知识点理解困难之外,在对链表进行插入删除和排序相关操作上同顺序表的操作基本相当。其他的知识点像单链表的建立和基本算法等都较为熟悉。

第四章和第五章有关堆栈以及队列的知识点比较少,除有关算法较为特殊以外,其余算法都是先前学过的顺序表和链表的知识,加上思想上较为重视,因此这部分内容是我对全书掌握最好的一部分。在一些实际问题的应用与处理方面,对其进行存储结构的选择还是需要认真考虑的。在算法的时间复杂度和空间性能的分析仍有些困难。

第六章的学习感觉较为困难的部分在于矩阵的应用上。在矩阵的存储结构中,使用三元组表发相对较为简单,而使用十字链表就有些困难了。但在某些问题的处理上又必须或从节省空间考虑采用十字链表来处理,想矩阵的加法运算。广义表的定义还是比较容易理解的,其存储结构也不难掌握,关于应用也只局限于在多项式的表示上。

第七章是全书的重点。在这一章中概念和定义都很多,有些很昏人但都很重要,要区分开来。二叉树的性质容易懂却很难记忆。对二叉树的存储结构和遍历算法这部分内容掌握较好,能够熟练运用。关于二叉排序树和的哈弗曼树却相对有些压力,其生成和对其关键字的插入和删除时重点。

第八章关于树的分析,首先要明确树和二叉树的区别,以及书中的相关定义和概念。关于二叉树、树和森林之间的转换和遍历方法是重点,但不算是难。接着就是数的存储结构的选择及转化为二叉树的算法,这部分有些吃力。再就介绍了特殊的树-B树,关于对B树的操作,插入关键字是中带领和难点。

第九章散列结构这一章理解比较完善的知识点有:基本概念和存储结构。散列函数中直接定址法和除留余数法学得比较扎实,对数字分析法等方法则感觉较为陌生。对两种冲突处理的算法思想的理解良好,问题在于用C语言描述上。

最后一章,图及其应用中,相关定义及其概念很多,容易混淆,这就要慢慢来,仔细分辨。图的邻接矩阵、邻接表表示法及其之间的转换时重点和难点。而对十字链表和邻接多重表的表示法则较为陌生。感觉理解较为吃力的内容有图的遍历(包括深度和广度优先遍历),以及最小生成树的问题。最短路径、AOV网、关键路径、AOE网和拓扑排序的学习也是相对较轻松的。,三、学习体会

在学习开始,王教授就明确提出它不是一种计算机语言,不会介绍新的关键词,而是通过学习可以设计出良好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。联系到在大一和大二上学期学习的C和C++语言,我深刻认识到了这一点。“软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的描述。

这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。

四、对《数据结构与算法》课程教学的建议

1、建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生保持良好的精神状态。

2、建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。

以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!

第四篇:山东07年专升本考试数据结构模拟试题

山东:07年专升本考试数据结构模拟试题1

一、填空题:(每小题2分,共10分)

1.设有数据结构(D,R),其中 D 是数据元素的有限集,R 是 的有限集。

2.深度为 k 的二叉树其结点数至多有 个。

3.栈是一种特殊的线性表,它允许在表的一端进行 操作。

4.通常象交通、道路问题的数学模型是一种称为 的数据结构。

5.哈希表是一种查找表,可以根据哈希函数直接获得。

二、单项选择题:(每小题2分,共10分)

对于下列各题,在备选答案中选出一个正确的,并将其编号填在“ ”位置上。

1.若线性表最常用的操作是存取第 i 个元素及其前驱元素的值,则采用 存储方式最节省运算时间。

A.单链表 B.双链表 C.单循环链表 D.顺序表

2.下列排序算法中,算法在进行一趟相应的排序处理结束后不一定能选出一个元素放到其最终位置上。

A.直选择排序 B.冒泡排序 C.归并排序 D.堆排序

3.队列的操作原则是。

A.先进后出 B.先进先出 C.只能进行插入 D.只能进行删除

4.在具有 n 个结点的二叉链表中,非空的链域个数为。

A.n-1 B.n C.n+1 D.不确定

5.对具有 n 个元素的有序查找表采用折半查找算法查找一个键值,其最坏比较次数的数量级为。

A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)

三、判断题:(每小题2分,共10分)

判断下列各题是否正确,若正确,在题后的括号内填“T”,否则填“F”。

1.在栈为空的情况下不能作出栈处理,否则,将产生下溢出。()

2.如果有向图 G=(V, E)的拓扑序列唯一,则图中必定仅有一个顶点的入度为0、一个顶点的出度为0。()

3.在大根堆中,必定满足每个结点的键值大于其左右子树中所有结点的键值。()4.在采用线性探测法处理冲突的散列表中所有同义词在表中相邻。()

5.在索引顺序表中,对索引表既可采用顺序查找,也可采用二分查找。()

四、解答下列各题:(每题10分,共40分)

1.已知线性表 L 采用带头结点的的单向循环链表表示,试给出它的存储结构类型描述及相应的示意图。

2.已知一棵二叉树的先序、中序和后序序列如下所示,请填写各序列中空格处的结点,并画出该二叉树的二叉链表存储结构示意图。

先序序列是:_ B _ F _ I C E H _ G; 中序序列是:D _ K F I A _ E J C _ ;

后序序列是:_ K _ F B H J _ G _ A 3.已知数据表为(48,70,33,65,24,56,12,92,86,22),a)写出采用快速排序算法进行排序时第一趟快速划分的详细过程及结果;b)写出按基数排序思想对最低位进行一次分配和收集的结果。

4.对图1所示的带权无向图,写出它的邻接矩阵和深度优先搜索序列,并按克鲁斯卡算法求其最小生成树(写出求解的详细过程示意图)。

图1 带权无向图

五、算法设计题:(前两题必做,每题15分,共30分;第三题为附加题,选做,10分)

1.已知队列 Q 以循环队列存储。写出 Q 的存储结构类型描述,并试编写算法实现将元素 x 插入队列 Q 的入队操作 EnQueue(Q,x)和从队列 Q 中获取队首元素的函数 GetTop(Q)。

2.假设线性表 L=(a1,a2,„„,an)用带头结点的单链表存储表示,试编写算法对其实现就地逆置,即利用原链表中每一个结点存储空间,使得元素的逻辑次序改变为(an,„„, a2,a1)。

3.设非空二叉树 T 采用中序线索二叉链表表示,写出 T 的存储结构类型描述。试编写算法 InOrderTraverse(T)实现对二叉树 T 的中序遍历。山东:07年专升本考试数据结构模拟试题2

一、单项选择题:(每小题2分,共10分)

对于下列各题,在备选答案中选出一个正确的,并将其编号填在“ ”位置上。

1.折半查找法要求查找表中各元素的键值必须是。

A.递增或递减 B.递增 C.递减 D.无序

2.若对某线性表最常进行的操作是在最后一个元素之后插入和删除第一个元素,则采用 存储方式最节省运算时间。

A.单链表 B.双链表

C.仅有头指针的单循环链表 D.仅有尾指针的单循环链表

3.有64个结点的完全二叉树的深度为(假设根结点的层次为1)。

A.8 B.7 C.6 D.5 4.对于键值序列(2,33,21,18,65,38,7,49,24,86),用筛选法建堆,必须从键值为 的结点开始。

A.86 B.2 C.65 D.38 5.设图 G 用邻接表存储,则求每个顶点入度的算法时间复杂度为。

A.O(n)B.O(n+e)C.O(n*n)D.O(n*e)

二、判断题:(每小题2分,共10分)

判断下列各题是否正确,若正确,在题后的括号内填“T”,否则填“F”。

1.在队满情况下不能作入队处理,否则,将产生“上溢”。()

2.基于插入思想的排序算法都是稳定的。()

3.一个有向图的邻接表和逆邻接表中的结点个数不一定相等。()

4.若一棵二叉树的任一非叶子结点度为2,则该二叉树为满二叉树。()

5.广义表是线性表的推广,因此也可以采用顺序方式进行存储。()

三、填空题:(每小题2分,共10分)

1.在单链表中,删除指针 P 所指结点的后继结点的语句是:。

2.有向图 G 用邻接矩阵 A[1..n,1..n] 存储表示,其第 i 行的所有元素之和等于顶点 i 的。3.基数排序算法的时间复杂度为。

4.平衡二叉树中每个结点的平衡因子定义为。

5.利用直接插入排序算法对有 n 个元素的数据表进行排序,在最坏情况下,元素的移动次为。

四、解答下列各题:(每小题10分,共40分)

1.写出采用顺序方式存储的栈的类型描述及相应的入栈、出栈操作的示意图。

2.已知数据表为(60,20,31,5,44,55,61,30,80,150,4,29),写出采用希尔排序算法进行排序的详细过程和结果(假设增量序列 dlta[] ={6,3,1})。

3.已知图 G 的邻接表存储结构示意图如下所示,画出它的逻辑关系示意图,以及按深度优先搜索和广度优先搜索进行遍历所得到的顶点序列。

4.设散列函数为 H(K)= K mod 5,散列表的地址空间为 0..6,初始时散列表为空,用线性探测法解决冲突,请写出依次插入23,14,9,6,30,12,18时散列地址的计算过程及结果,以及最后得到的散列表。

五、算法设计题:(前两题必做,每题15分,共30分;第三题为附加题,选做,10分)

1.设计算法将一个带头结点的单循环链表 A 分解为两个具有相同结构的链表 B、C,其中:B 表中的结点为 A 表中元素的顺序号为奇数的结点,而 C 表中的结点为 A 表中元素的顺序号为偶数的结点。(要求利用原表结点。)

2.已知 S 为顺序栈。写出 S 的存储结构类型描述。试编写算法实现将元素 x 插入栈 S 的入栈操作 Push(S,x)和删除栈顶元素的出栈操作 Pop(S)。

3.已知一棵完全二叉树存于顺序表 sa 中,sa.elem[1..sa.last] 包含各结点值。试编写算法根据此顺序存储结构建立该二叉树的二叉链表 T。

第五篇:全国2009年10月自学考试数据结构试题

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....全国2009年10月自学考试数据结构试题

课程代码:02331

一、单项选择题(本大题共15小题,每小题2分,共30分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.按值可否分解,数据类型通常可分为两类,它们是()A.静态类型和动态类型 C.原子类型和结构类型

B.原子类型和表类型 D.数组类型和指针类型

2.对于三个函数f(n)=2008n3+8n2+96000,g(n)=8n3+8n+2008和h(n)=8888nlogn+3n2,下列陈述中不成立的.是()A.f(n)是0(g(n))C.h(n)是0(nlogn)

B.g(n)是0(f(n))D.h(n)是0(n2)3.指针p、q和r依次指向某循环链表中三个相邻的结点,交换结点*q和结点*r在表中次序的程序段是()

A.p->next=r;

q->next=r->next;

r->next=q; B.p->next=r;

r->next=q;

q->next=r->next; C.r->next=q;

q->next=r->next;

p->next=r; D.r->next=q;

p->next=r;

q->next=r->next;

4.若进栈次序为a,b,c,且进栈和出栈可以穿插进行,则可能出现的含3个元素的出栈序列个数是()A.3 C.6

B.5 D.7 5.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为()A.rear= =front C.rear+1= =front 6.串的操作函数str定义为:

int str(char*s){ char *p=s;

while(*p!=′′)p++; return p-s; } 俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

B.(front+1)%n= =rear D.(rear+1)%n= =front

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....则str(″abcde″)的返回值是()A.3 C.5

B.4 D.6 7.二维数组A[10][6]采用行优先的存储方法,若每个元素占4个存储单元,已知元素A[3][4]的存储地址为1000,则元素A[4][3]的存储地址为()A.1020 C.1036

B.1024 D.1240 8.对广义表L=(a,())执行操作tail(L)的结果是()A.()C.a

B.(())D.(a)9.已知二叉树的中序序列和后序序列均为ABCDEF,则该二叉树的先序序列为()A.FEDCBA C.FDECBA

B.ABCDEF D.FBDCEA 10.已知森林F={T1,T2,T3,T4,T5},各棵树Ti(i=1,2,3,4,5)中所含结点的个数分别为7,3,5,l,2,则与F对应的二叉树的右子树中的结点个数为()A.2 C.8

B.3 D.11 11.若非连通无向图G含有21条边,则G的顶点个数至少为().A.7 C.21

B.8 D.22 12.如图所示的有向图的拓扑序列是()A.c,d,b,a,e B.c,a,d,b,e C.c,d,e,a,b D.c,a,b,d,e 13.对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为()

A.(5,1,4,3,6,2,8,7)C.(5,1,4,3,2,6,8,7)

B.(5,1,4,3,2,6,7,8)D.(8,7,6,5,4,3,2,1)14.分块查找方法将表分为多块,并要求()A.块内有序 C.各块等长

B.块间有序 D.链式存储

15.便于进行布尔查询的文件组织方式是()A.顺序文件 C.散列文件

B.索引文件 D.多关键字文件 俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....二、填空题(本大题共10小题,每小题2分,若有两个空格,每个空格1分,共20分)

请在每个空格中填上正确答案。错填、不填均无分。

16.数据的链式存储结构的特点是借助________表示数据元素之间的逻辑关系。17.如果需要对线性表频繁进行________或________操作,则不宜采用顺序存储结构。18.如图所示,可以利用一个向量空间同时实现两个类型相为空的条件是top1=0,栈2为空的条件是top2=n-1,则件是________。

19.静态存储分配的顺序串在进行插入、置换和________等操作时可能发生越界。20.广义表L=(a,(b,()))的深度为________。

21.任意一棵完全二叉树中,度为1的结点数最多为________。

22.求最小生成树的克鲁斯卡尔(Kruskal)算法耗用的时间与图中________的数目正相关。

23.在5阶B-树中,每个结点至多含4个关键字,除根结点之外,其他结点至少含________个关键字。24.若序列中关键字相同的记录在排序前后的相对次序不变,则称该排序算法是________的。25.常用的索引顺序文件是________文件和________文件。

三、解答题(本大题共4小题,每小题5分,共20分)26.如图所示,在n×n矩阵A中,所有下标值满足关系式i+j<n+l的元素aij的值均为0,现将A中其它元素按行优先顺序依次存储到长度为n(n+1)/2的一维数组sa中,其中元素a1,n存储在sa[0]。(1)设n=10,元素a4,9存储在sa[p],写出下标p的值;

(2)设元素ai,j存储在sa[k]中,写出由i,j和n计算k的一般公式。

同的栈。其中栈1“栈满”的判定条

27.由字符集{s,t,a,e,I}及其在电文中出现的频度构建的哈夫曼树如图所示。已知某段电文的哈夫曼编码为111000010100,请根据该哈夫曼树进行译码,写出原来的电文。

28.已知无向图G的邻接表如图所示,俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....(1)画出该无向图;

(2)画出该图的广度优先生成森林。

29.对序列(48,37,63,96,22,31,50,55,11)进行升序的堆排序,写出构建的初始(大根)堆及前两趟重建堆之后的序列状态。初始堆: 第1趟: 第2趟:

四、算法阅读题(本大题共4小题,每小题5分,共20分)30.阅读下列算法,并回答问题:

(1)无向图G如图所示,写出算法 f30(&G)的返回值;(2)简述算法f30的功能。#define MaxNum 20 int visited[MaxNum]; void DFS(Graph *g,int i);

/*从顶点vi出发进行深度优先搜索,访问顶点vj时置visited[j]为1*/ int f30(Graph *g){ int i,k;

for(i=0;

in;

i++)/*g->n为图g的顶点数目*/

visited[i]=0; 俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....for(i=k=0;

in;i++)if(visited[i]= =0){ k++; DFS(g,i); } return k; }

31.假设学生成绩按学号增序存储在带头结点的单链表中,类型定义如下:

typedef struct Node { int id;

/*学号*/ int score;

/*成绩*/ struct Node

*next; } LNode,*LinkList; 阅读算法f31,并回答问题:(1)设结点结构为f31(A,B)后A所指的链表;,成绩链表A和B如图所示,画出执行算法

(2)简述算法f31的功能。

void f31(LinkList A, LinkList B){ LinkList p, q;p=A->next;q=B->next;while(p && q){ if(p->idid)p=p->next;else if(p->id>q->id)q=q->next;else { if(p->score<60)俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....if(q->score<60)p->score=q->score;else p->score=60;p=p->next;q=q->next;} } } 32.阅读下列算法,并回答问题:

(1)设串s=“OneWorldOneDream”,t="One",pos是一维整型数组,写出算法 f32(s,t,pos)执行之后得到的返回值和pos中的值;(2)简述算法f32的功能。

int strlen(char*s);

/*返回串s的长度*/ int index(char*st,char*t);

/*若串t在串st中出现,则返回在串st中首次出现的下标值,否则返回-1*/ int f32(char*s, char*t, int pos[]){ int i, j, k, ls, lt;ls=strlen(s);1t=strlen(t);if(ls= =0||1t= =0)return-1;k=0;i=0;do { j=index(s+i, t);if(j>=0){ pos[k++]=i+j;i+=j+1t;} }while(i+1t<=1s && j >=0);return k;} 33.二叉排序树的存储结构定义为以下类型:

typedef int KeyType;typedef struct node { KeyType

key;

/*关键字项*/ 俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....InfoType

otherinfo;

/*其它数据项*/ struct node *1child, *rchild;/*左、右孩子指针*/ } BSTNode, *BSTree; 阅读算法f33,并回答问题:

(1)对如图所示的二叉排序树T,写出f33(T,8)返回的指针所指结点的关键字;(2)在哪些情况下算法f33返回空指针?(3)简述算法f33的功能。

BSTNode *f33(BSTree T, KeyType x){

BSTNode

*p;if(T= =NULL)return NULL;p=f33(T->1child, x);if(p!=NULL)return p;if(T->key>x)return T;return f33(T-> rchild, x);}

五、算法设计题(本题10分)

34.假设线性表采用顺序存储结构,其类型定义如下:

#define ListSize 100 typedef struct { int data[ListSize];int length;} SeqList, *Table;编写算法,将顺序表L中所有值为奇数的元素调整到表的前端。俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

☆自考乐园---心境随缘,诚与天下自考人共勉!!

☆自考乐园---分享快乐,你的快乐老家!!☆自考乐园---引领成功,你的精神乐园!!自考乐园俱乐部,专注于自考,致力于成为全国最全,最优的自考学习交流,资料共享平台.....以上资料由百度贴吧:

----------自考乐园俱乐部杨尚杰为你精心编辑 俱乐部名称:自考乐园;俱乐部id:5346389(请牢记它哦~在百度贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部);俱乐部url地址:http://tieba.baidu.com/club/5346389(您也可以通过此url进入俱乐部。)

下载数据结构考试试题总结doc[精选合集]word格式文档
下载数据结构考试试题总结doc[精选合集].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    武汉大学数据结构考试试题(附答案)

    1. 下面程序段的执行次数为( A ) for(i=0;i<n-1;i++) for(j=n;j>i;j--) state; A. n(n+2)2 B .(n-1)(n+2)2 C. n(n+1)2 D. (n-1)(n+2) 2. 一个向量第一个元素的存储......

    2013台湾省数据结构试题及答案(推荐)

    1、串的逻辑结构与( D )的逻辑结构不相同。 A)线性表 B)栈 C)队列 D)集合 2、广义表head(((a,b),(c,d)))的运算结果为( A )。 A)(a,b) B)(c,d) C)空表 D)((a,b),(c,d)) 3、链式存储的存......

    2009考研数据结构试题点评

    2009年考研计算机专业综合考试数据结构试题点评 2009年考研计算机专业综合考试是统一命题后的首次考试。本次考试统考科目包括四门计算机专业课:数据结构、计算机组成原理、......

    数据结构考试题目及答案

    数据结构试题6 一、单项选择题(每小题3分,共30分) 1.设栈的输入序列是1、2、3、4,则______不可能是其出栈序列。( ) [A] 1234 [B] 2134 [C] 1432 [D] 4312 2.在一个具有n个结......

    数据结构学习总结

    数据结构与算法课程论文综述 摘要 如何合理的组织数据、高效率的处理数据是扩大计算机应用领域、提高软件效率的关键。在软件开发过程中要求“高效地”组织数据和设计出“好......

    “数据结构”课程总结

    “数据结构”课程总结 计算机科学与技术专业从1994年开始为我校专科生开设“数据结构”课程,2004年开始为本科生开设这门课程。由于本门课程的教学从教材、讲授、实验指导都......

    数据结构课程设计总结

    课程设计总结 通过这次的课程设计,我们对数据结构中图的应用有了更深的理解,并且使我们深刻的认识到实践的重要性,只有理论与实践相结合才能达到很好的学习效果,学到很多东西,同......

    数据结构试题大题编程及参考答案

    数据结构考试题参考答案 1、设顺序表L中的数据元素递增有序。试写一算法,将数据元素x插入到顺序表L的适当位置,以保持该表的有序性。 解:存储结构为: typedef struct SeqList......