2015陕西省数据结构理论考试试题及答案
- 格式:rtf
- 大小:69.08 KB
- 文档页数:2
其他系统西安交通大学--数据结构所有答案3,栈和队列都是顺序存取的的线性表,但它们对存取位置的限制不同。
,A 正确 B错误,答案是:A3,在使用后缀表表示实现计算器时用到一个栈的实例,其作用是暂存运算对象。
,A正确 B错误,答案是:A3,具有n个结点的完全二叉树的高度为┖log2n┘1。
,A正确 B错误,答案是:B3,为度量一个搜索算法的性能,需要在时间和空间方面进行权衡。
,A正确 B错误,答案是:A3,闭散列法通常比开散列法时间效率更高。
,A正确 B错误,答案是:B3,一棵m阶B树中每个结点最多有m个关键码,最少有2个关键码。
,A 正确 B错误,答案是:B3,有向图的邻接表和逆邻接表中表结点的个数不一定相等。
,A正确 B错误,答案是:B3,对链表进行插入和删除操作时不必移动链表中结点。
,A正确 B错误,答案是:A3,希尔排序算法的时间复杂度为On2。
,A正确 B错误,答案是:B3,用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。
,A正确 B错误,答案是:B3,通常使用两个类来协同表示单链表,即链表的结点类和链表类。
,A正答案是:A3,顺序表用一维数组作为存储结构,因此顺序表是一维数组。
,A正确 B 错误,答案是:B3,二维数组是数组元素为一维数组的线性表,因此它是线性结构。
,A正确 B错误,答案是:B3,算法的运行时间涉及加、减、乘、除、转移、存、取、等基本运算。
要想准确地计算总运算时间是不可行的。
,A正确 B错误,答案是:A3,堆是完全二叉树,完全二叉树不一定是堆。
(),A正确 B错误,答案是:A3,顺序表查找指的是在顺序存储结构上进行查找。
(),A正确 B错误,答案是:B3,入栈操作和入队列操作在链式存储结构上实现时不需要考虑栈溢出的情况。
,A正确 B错误,答案是:A3,中序遍历一棵二叉排序树可以得到一个有序的序列。
,A正确 B错误,答案是:A3,用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。
1、在软件开发中,下面任务不属于设计阶段的是(D)A. 数据结构设计B. 给出系统模块结构C. 定义模块算法D. 定义需求并建立系统模型2、算法的时间复杂度是指(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数3、下列工具中属于需求分析常用工具的是(D)A. PADB. PFDC. N-SD. DFD4、算法的空间复杂度是指(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间5、下列关于队列的叙述中正确的是(C)A. 在队列中只能插入数据B. 在队列中只能删除数据C. 队列是先进先出的线性表D. 队列是先进后出的线性表6、按条件f对关系R进行选择,其关系代数表达式为(C)A. R|X|RB. R|X|RfC. бf(R)D. ∏f(R)7、程序流程图(PFD)中的箭头代表的是(B)A. 数据流B. 控制流C. 调用关系D. 组成关系8、用树形结构来表示实体之间联系的模型称为(B)A. 关系模型B. 层次模型C. 网状模型D. 数据模型9、下列工具中属于需求分析常用工具的是(D)A. PADB. PFDC. N-SD. DFD10、数据库设计包括两个方面的设计内容,它们是(A)A. 概念设计和逻辑设计B. 模式设计和内模式设计C. 内模式设计和物理设计D. 结构特性设计和行为特性设计11、在深度为5的满二叉树中,叶子结点的个数为(C)A. 32B. 31C. 16D. 1512、下列关于队列的叙述中正确的是(C)A. 在队列中只能插入数据B. 在队列中只能删除数据C. 队列是先进先出的线性表D. 队列是先进后出的线性表13、下列关于队列的叙述中正确的是(C)A. 在队列中只能插入数据B. 在队列中只能删除数据C. 队列是先进先出的线性表D. 队列是先进后出的线性表14、关系表中的每一横行称为一个(A)A. 元组B. 字段C. 属性D. 码15、结构化程序设计主要强调的是(B)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性。
2015年考研必备资料2015年考研计算机数据结构试题及答案目录2015年考研计算机数据结构试题及答案(1) (2)2015年考研计算机数据结构试题(1) (2)2015年考研计算机数据结构试题答案(1) (5)2015年考研计算机数据结构试题及答案(2) (6)2015年考研计算机数据结构试题(2) (6)2015年考研计算机数据结构试题答案(2) (9)2015年考研计算机数据结构试题及答案(3) (11)2015年考研计算机数据结构试题(3) (11)2015年考研计算机数据结构试题答案(3) (13)2015年考研计算机数据结构试题及答案(4) (15)2015年考研计算机数据结构试题(4) (15)2015年考研计算机数据结构试题答案(4) (17)2015年考研计算机数据结构试题及答案(5) (19)2015年考研计算机数据结构试题(5) (19)2015年考研计算机数据结构试题答案(5) (21)2015年考研计算机数据结构试题及答案(1)2015年考研计算机数据结构试题(1)一、选择题(24分)1.下列程序段的时间复杂度为( )。
i=0,s=0; while (s(A) O(n1/2) (B) O(n1/3) (C) O(n) (D) O(n2)2.设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。
(A) 单向链表 (B) 单向循环链表(C) 双向链表 (D) 双向循环链表3.设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为( )。
(A) s->next=p->next;p->next=-s; (B) q->next=s; s->next=p;(C) p->next=s->next;s->next=p; (D) p->next=s;s->next=q;4.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( )。
西交15年7月课程考试《数据结构》作业考核试题满分答案答案:1. n(n-1),n(n-1)/22. n/23. 开放定址法,链地址法4. 145. 2h-1,2h-16. (12,24,35,27,18,26)7. 5解: (1)先根序列:ABCDEF 后跟序列:BDEFCA(2)先序序列: ABCDEFGHIJK后序序列: BDEFCAIJKHG(3)相应的二叉树如下:答:特殊矩阵指值相同的元素或零元素在矩阵中的分布有一定规律,因此可以对非零元素分配单元(对值相同元素只分配一个单元),将非零元素存储在向量中,元素的下标i 和j 和该元素在向量中的下标有一定规律,可以用简单公式表示,仍具有随机存取功能。
而稀疏矩阵是指非零元素和矩阵容量相比很小(t <<m*n ),且分布没有规律。
用十字链表作存储结构自然失去了随机存取的功能。
即使用三元组表的顺序存储结构,存取下标为i 和j 的元素时,要扫描三元组表,下标不同的元素,存取时间也不同,最好情况下存取时间为O(1),最差情ABFDCIGHEJK况下是O(n),因此也失去了随机存取的功能。
答:(1)该图是强连通的,所谓强连通是指有向图中任意顶点都存在到其他各顶点的路径。
(2)简单路径是指在一条路径上只有起点和终点可以相同的路径:有v1v2、v2v3、v3v1、v1v4、v4v3、v1v2v3、v2v3v1、v3v1v2、v1v4v3、v4v3v1、v3v1v4、另包括所有有向环,有向环如下:v1v2v3v1、v1v4v3v1(这两个有向环可以任一顶点作为起点和终点)(3)每个顶点的度、入度和出度:D(v1)=3 ID(v1)=1 OD(v1)=2D(v2)=2 ID(v2)=1 OD(v2)=1D(v3)=3 ID(v3)=2 OD(v3)=1D(v4)=2 ID(v4)=1 OD(v4)=1(4)邻接表:(注意边表中邻接点域的值是顶点的序号,这里顶点的序号是顶点的下标值-1) vertex firstedge next┌─┬─┐┌─┬─┐┌─┬─┐0│v1│─→│1│─→│3│∧│├─┼─┤├─┼─┤└─┴─┘1│v2│─→│2│∧│├─┼─┤├─┼─┤2│v3│─→│0│∧│├─┼─┤├─┼─┤3│v4│─→│2│∧│└─┴─┘└─┴─┘逆邻接表:┌─┬─┐┌─┬─┐0│v1│─→│2│∧│├─┼─┤├─┼─┤1│v2│─→│0│∧│├─┼─┤├─┼─┤┌─┬─┐2│v3│─→│1│─→│3│∧│├─┼─┤├─┼─┤└─┴─┘3│v4│─→│0│∧│└─┴─┘└─┴─┘邻接矩阵:0 1 0 10 0 1 01 0 0 00 0 1 0答:因为链表无法进行随机访问,如果要访问链表的中间结点,就必须先从头结点开始进行依次访问,这就要浪费很多时间,还不如进行顺序查找,而且,用链存储结构将无法判定二分的过程是否结束,因此无法用链表实现二分查找。
西安交大数据结构习题及答案西安交大数据结构习题及答案1:栈和队列1.1 栈1.1.1 基本概念栈是一种后进先出(Last-In-First-Out, LIFO)的数据结构,即最后进入的元素最先被访问。
1.1.2 基本操作- push(x): 元素x入栈- pop(): 弹出栈顶元素- top(): 返回栈顶元素- isEmpty(): 判断栈是否为空1.2 队列1.2.1 基本概念队列是一种先进先出(First-In-First-Out, FIFO)的数据结构,即最先进入的元素最先被访问。
1.2.2 基本操作- enqueue(x): 元素x入队- dequeue(): 移除队首元素- front(): 返回队首元素- rear(): 返回队尾元素- isEmpty(): 判断队列是否为空2:链表2.1 单链表2.1.1 基本概念单链表是一种线性结构,每个节点含有数据和指向下一个节点的指针。
2.1.2 基本操作- 初始化链表- 在链表头插入节点- 在链表尾插入节点- 在指定位置插入节点- 删除节点- 查找节点- 遍历链表2.2 双向链表2.2.1 基本概念双向链表是一种线性结构,每个节点含有数据、指向前一个节点的指针和指向后一个节点的指针。
2.2.2 基本操作- 初始化双向链表- 在链表头插入节点- 在链表尾插入节点- 在指定位置插入节点- 删除节点- 查找节点- 遍历链表3:树3.1 二叉树3.1.1 基本概念二叉树是一种数据结构,每个节点最多有两个子节点:左子节点和右子节点。
3.1.2 基本操作- 创建二叉树- 先序遍历- 中序遍历- 后序遍历- 层次遍历3.2 AVL树3.2.1 基本概念AVL树是一种自平衡的二叉搜索树,保证任意节点的左子树和右子树的高度差最多为1:3.2.2 基本操作- 插入节点- 删除节点- 查找节点- 遍历树4.1 图的表示4.1.1 邻接矩阵表示法4.1.2 邻接表表示法4.2 图的遍历4.2.1 深度优先搜索(DFS)4.2.2 广度优先搜索(BFS)4.3 最短路径算法4.3.1 Dijkstra算法4.3.2 Floyd-Warshall算法5:排序算法5.1 冒泡排序5.2 插入排序5.3 选择排序5.4 快速排序5.5 归并排序5.6 堆排序本文档涉及附件,请查看附件文件以获取更详细的信息。
1、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是( B )。
A)9 B)11 C)15 D)不能确定2、与无向图相关的术语有( C )。
A)强连通图 B)入度C)路径 D)弧3、设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为( A )。
A)p->next=p->next->next B)p=p->nextC)p=p->nexe->next D)p->next=p4、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一C)不含回路 D)有n条边5、下列各种数据结构中属于线性结构的有( A )。
A)栈 B) 二叉树C) 广义表 D) 图6、广义表head(((a,b),(c,d)))的运算结果为( A )。
A)(a,b) B)(c,d)C)空表 D)((a,b),(c,d))7、广义表head(((a,b),(c,d)))的运算结果为( A )。
A)(a,b) B)(c,d)C)空表 D)((a,b),(c,d))8、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是( B )。
A)9 B)11 C)15 D)不能确定9、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( D )存储方式最节省时间。
A)顺序表B)双链表C)带头结点的双循环链表D)单循环链表10、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)4011、与无向图相关的术语有( C )。
A)强连通图 B)入度C)路径 D)弧12、已知广义表L=((x,y,z),a,(u,t,w)),从L 表中取出原子项t 的操作是( D )。
一、填空题(每空1分,共10分)1. _数据_即信息的载体,是对客观事物的符合表示,指能输入到计算机中并能被计算机程序处理的符合的总称。
2. 线性结构中元素之间存在_一对一_关系;树型结构中元素之间存在_一对多_关系;图型结构中元素之间存在_多对多_关系。
3. 在双向链表中,每个结点含有两个指针域,一个指向_直接前趋_结点,另一个指向_直接后继_结点。
4. 两个字符串相等的条件是两串长度相等和_各个对应位置的字符相等。
5. 对于一个有n个结点的二叉树,当它为一棵_完全_二叉树时具有最小高度,当它为一棵单支树具有最大高度,其最大高度为_n_。
二、选择题(每题2分,共24分)1.A2.B3.A4.A5.D6.C7.C8.D9.C 10.C 11.B 12.D三、判断题(每题1分,共10分)1.√2.×3.×4.×5.×6.×7.√8.√9.√ 10.×四、简答题(共16分)1.简述什么是数据结构,并说明有哪几类基本结构。
(7分)答:数据结构是数据元素的组织形式,或数据元素相互之间存在的一种或多种特定关系的集合。
(3分)数据结构有四类基本形式:集合、线性结构、树型结构和图状结构。
(4分)2.比较对一般线性表、栈和队列三种结构数据进行操作的不同之处?(9分)答:一般线性表可在表的任意位置进行插入和删除操作;(3分)栈限定仅在表的一端进行插入或删除操作,栈的修改是按“后进先出”的原则进行的;(3分)队列限定只能在表的一端进行插入,在表的另一端进行删除,是一种“先进先出”的线性表。
(3分)五、分析题(共40分)1. 已知一棵树边的集合为{<i,m>,<i,n>,<e,i>,<b,e>,<b,d>,<a,b>,<g,j>,<g,k>,<c,g>,<c,f>,<h,l>,<c,h>,<a,c>},请画出这棵树,并回答下列问题:(12分)(1)哪个是根结点? a (1分)(2)哪些是叶子结点? d m n f j k l (1分)(3)哪个是结点f的双亲? c (1分)(4)哪些是结点g的孩子? j k (1分)(5)哪些是结点e的兄弟? d (1分)(6)哪些是结点h的祖先? a c (1分)(7)结点c的度是多少? 3 (1分)(8)结点i的层次号分别是什么? 4 (1分)(9)树的深度是多少? 5 (1分)(10)以结点e为根的子树深度是多少?3 (1分)(2分) 2.写出下列树的先序、中序、后序遍历序列。
1、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。
二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。
分析你的算法的时、空复杂度。
2、给出折半查找的递归算法,并给出算法时间复杂度性分析。
3、本题要求建立有序的循环链表。
从头到尾扫描数组A,取出A[i](0<=i<n),然后到链表中去查找值为A[i]的结点,若查找失败,则插入。
LinkedList creat(ElemType A[],int n)//由含n个数据的数组A生成循环链表,要求链表有序并且无值重复结点{LinkedList h;h=(LinkedList)malloc(sizeof(LNode));//申请结点h->next=h; //形成空循环链表for(i=0;i<n;i++){pre=h;p=h->next;while(p!=h && p->data<A[i]){pre=p; p=p->next;} //查找A[i]的插入位置if(p==h || p->data!=A[i]) //重复数据不再输入{s=(LinkedList)malloc(sizeof(LNode));s->data=A[i]; pre->next=s; s->next=p;//将结点s链入链表中}}//forreturn(h);}算法结束4、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。
现要求采用循环链表结构设计一个算法,模拟此过程。
#include<stdlib.h>typedef int datatype;typedef struct node{datatype data;struct node *next;}listnode;typedef listnode *linklist;void jose(linklist head,int s,int m){linklist k1,pre,p;int count=1;pre=NULL;k1=head; /*k1为报数的起点*/while (count!=s) /*找初始报数起点*/{pre=k1;k1=k1->next;count++;}while(k1->next!=k1) /*当循环链表中的结点个数大于1时*/{ p=k1; /*从k1开始报数*/count=1;while (count!=m) /*连续数m个结点*/{ pre=p;p=p->next;count++;}pre->next=p->next; /*输出该结点,并删除该结点*/printf("%4d",p->data);free(p);k1=pre->next; /*新的报数起点*/}printf("%4d",k1->data); /*输出最后一个结点*/free(k1);}main(){linklist head,p,r;int n,s,m,i;printf("n=");scanf("%d",&n);printf("s=");scanf("%d",&s);printf("m=",&m);scanf("%d",&m);if (n<1) printf("n<0");else{/*建表*/head=(linklist)malloc(sizeof(listnode)); /*建第一个结点*/ head->data=n;r=head;for (i=n-1;i>0;i--) /*建立剩余n-1个结点*/{ p=(linklist)malloc(sizeof(listnode));p->data=i;p->next=head;head=p;}r->next=head; /*生成循环链表*/jose(head,s,m); /*调用函数*/}}5、假设K1,…,Kn是n个关键词,试解答:试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K1,K2,…,Kn 时,用算法建立一棵以LLINK / RLINK 链接表示的二叉查找树。
1、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
2、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
3、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是( B )。
A)9 B)11 C)15 D)不能确定
4、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。
这样的排序方法是( A )。
A)直接选择排序 B)直接插入排序
C)快速排序 D)起泡排序
5、设一数列的顺序为1,2,3,4,5,6,通过栈结构不可能排成的顺序数列为( B )。
A)3,2,5,6,4,1 B)1,5,4,6,2,3
C)2,4,3,5,1,6 D)4,5,3,6,2,1
6、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A) 单链表 B) 仅有头指针的单循环链表
C) 双链表 D) 仅有尾指针的单循环链表
7、在数据结构中,从逻辑上可以把数据结构分为( C )。
A)动态结构和静态结构 B)紧凑结构和非紧凑结构
C)线性结构和非线性结构 D)内部结构和外部结构
8、数据结构研究的内容是( D )。
A)数据的逻辑结构 B)数据的存储结构
C)建立在相应逻辑结构和存储结构上的算法 D)包括以上三个方面
9、n个顶点,e条边的有向图的邻接矩阵中非零元素有( C )个。
A)n B)2e C)e D) n+e
10、( C )在进行插入操作时,常产生假溢出现象。
A)顺序栈 B)循环队列
C)顺序队列 D)链队列
11、n个顶点的强连通图至少有( A )条边。
A)n B)n+1 C)n-1 D)n(n-1)
12、链式存储的存储结构所占存储空间( A )。
A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B)只有一部分,存放结点值
C)只有一部分,存储表示结点间关系的指针
D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
13、二叉树第i(i≥1)层上至多有( C )结点。
A)2i B)2i C)2i-1 D)2i-1
14、广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D )。
A) (G) B) (D) C) C D) D
15、在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为( B )。
A) rear=rear->next; B) front=front->next;
C) rear=front->next; D) front=rear->next ;。