暨南大学考研真题数据结构.pdf
20172017 年全国硕士研究生统一入学考试自命题试题(年全国硕士研究生统一入学考试自命题试题(B B 卷)卷)*学科、专业名称:计算机科学与技术、软件工程研究方向:计算机系统结构081201,计算机软件与理论 081202,计算机应用技术 081203,软件工程 083500,计算机技术(专业学位)085211,软件工程(专业学位)085212考试科目名称及代码:数据结构830考生注意:所有答案必须写在答题纸(卷)上,写在本试题上一律不给分。考生注意:所有答案必须写在答题纸(卷)上,写在本试题上一律不给分。一、一、单项选择题单项选择题(每题每题 2 2 分,共分,共 3030 分分)1.一个队列的入列序列是1,2,3,4,则队列的输出序列是()。A.4,3,2,1 B.1,2,3,4 C.1,4,3,2 D.3,2,4,12.循环队列用数组 A0.m-1存放其元素值,已知其头尾指针分别是 front 和 rear,则当前队列中的元素个数是()。A.(rear-front+m)%m B.rear-front+1 C.rear-front-1 D.rear-front3.平衡二叉树的平均查找长度是()。2 A.O(n)B.O(nlog2n)C.O(n)D.O(log2n)4.设 F 是由 T1、T2 和 T3 三棵树组成的森林,与F 对应的二叉树为 B,T1、T2 和 T3 的结点数分别为 N1、N2和 N3,则二叉树 B 的根结点的左子树的结点数为()。A.N1-1 B.N2-1 C.N2+N3 D.N1+N35.计算机内部数据处理的基本单元是()。A.数据 B.数据元素 C.数据项 D.数据库6.设按照从上到下、从左到右的顺序从 1 开始对完全二叉树的结点进行顺序编号,则编号为 i结点的左孩子结点的编号为()。A.2i+1 B.2i C.i/2 D.2i-17.设用邻接矩阵 A 表示有向图 G 的存储结构,则有向图 G 中顶点 i 的入度为()。A.第 i 行非 0 元素的个数之和B.第 i 列非 0 元素的个数之和 C.第 i 行 0 元素的个数之和D.第 i 列 0 元素的个数之和8.设一组初始记录关键字序列为(16,25,12,30,47,11,23,36,9,18,31),则以增量 d=5 的一趟希尔排序结束后的结果为()。A.11,23,12,9,18,16,25,36,30,47,31 B.11,23,12,9,16,18,25,36,47,30,C.16,23,12,9,11,18,25,36,30,47,31 C.9,11,12,16,18,23,25,30,36,47,9.设某有向图的邻接表中有n 个表头结点和 m 个表结点,则该图中有()条有向边。A.nB.n-1C.mD.m-110.设哈夫曼树中的叶子结点总数为 m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。A.2m-1B.2mC.2m+1D.4m11.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用 H(K)=K%9 作为散列函数,则散列地址为1 的元素有()个。A 1 B 2 C 3 D 4考试科目:数据结构共 5 页,第 1页12.下面程序的时间复杂为()。for(i=1,s=0;i=n;i+)t=1;for(j=1;jnext=s;s-prior=p;p-next-prior=s;s-prior=p-nest;B.s-prior=p;s-next=p-next;p-next=s;s-next-prior=s;C.p-prior=s;p-nest-prior=s;s-prior=p;s-next=p-prior;D.s-prior=p;s-next=p-next;p-next=s;p-next-prior=s;二填空题二填空题(每空每空 2 2 分,共分,共 2020 分分)1.采用堆排序、快速排序、冒泡排序,对初态为有序的表,最省时间的是。2.设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则第4 趟直接选择排序结束后的结果为。3.当待排记录序列按关键字顺序有序时,直接插入排序和冒泡排序能达到的时间复杂度,快速排序的时间性能退化为 (以第一个关键字为枢轴)。4.判定顺序栈是否为空的条件是,判定顺序栈是否为满的条件是。5.当向 B-树中插入关键字时,可能引起结点的 ,最终可能导致整个 B-树的高度增加。6.设散列表的长度为 8,散列函数 H(k)=k%7,用线性探测法解决冲突,则根据一组初始关键字序列(8,15,16,22,30,32)构造出的散列表的平均查找长度是。7.设在一棵度数为 3 的树中,度数为3 的结点数有 2 个,度数为2 的结点数有 1 个,度数为1 的结点数有 2 个,那么度数为 0 的结点数有个。三判断题(每题三判断题(每题 1 1 分,共分,共 1010 分,正确的选分,正确的选 t t,错误的选,错误的选 f f)1.顺序表查找指的是在顺序存储结构上进行查找。()2.循环队列中不存在队列满的问题。()3.n 阶对称矩阵可压缩存储到n/2 个单元的空间中。()4.一个图的邻接表表示法是唯一的。()5.希尔排序是稳定的。()6.由树转化成二叉树,该二叉树的右子树不一定为空。()7.根据拓扑排序结果可以判断一个有向图中是否存在环路。()8.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0 元素。()9.入栈操作和入队列操作在链式存储结构上实现时不需要考虑栈溢出的情况。()10.数据元素是数据的最小单位。()考试科目:数据结构共 5 页,第 2页四四.简答题(简答题(4545 分)分)1.设有 1000 个元素组成的无序序列,希望用最快的速度挑选出其中前 10 个(仅挑前 10个)最大元素,以下几种排序方法中哪一种最合适分析各排序算法,给出原因(7 分)(1)简单选择排序;(2)冒泡排序;(3)堆排序;(4)归并排序2.设二叉排序树中关键字由1 至 1000 的整数组成,现要查找关键字为 363 的结点,下面的关键字序列哪个不可能是在二叉树中查到的序列说明原因。(5 分)(1)51,250,501,390,320,340,382,363(2)24,877,125,342,501,623,421,3633.针对二叉树,回答以下问题:(1)具有 n 个结点的二叉树的最小深度是多少最大深度是多少(4 分)(2)具有 n 个结点的完全二叉树中有多少个叶子结点有多少个度为2 的结点(4 分)(3)具有 n0个叶子结点的完全二叉树中共有多少个结点(4 分)4.阅读如下程序,写出此程序的输出结果(其中栈的元素类型为char)。(5分)void main()Stack S;char x,y;InitStack(S);x=y;y=s;Push(S,x);Push(S,y);Pop(S,x);Push(S,k);Push(S,x);while(!StackEmpty(S)Pop(S,y);printf(y);5.给定图1所示带权有向图,利用Floyd算法,求每一对顶点之间的最短路径及其路径长度(要求写出求解过程)。(10分)图 16.一个带权无向图的最小生成树是否一定唯一在什么情况下构造出的最小生成树可能不唯一(6 分)考试科目:数据结构共 5 页,第 3页五算法填空(共五算法填空(共 2 2 小题,每空小题,每空 2 2 分,共分,共 2020 分分)1.下面的算法是在带头结点的单链表 L 中第 i 个位置之前插入元素 e。请在_处填上适当内容,使其成为一个完整算法。typedef struct LNodeElemTypedata;struct LNode *next;LNode,*LinkList;Status ListInsert_L(LinkList&L,int i,ElemType e)p=L;j=(1);while(p&(jnext;(2)if(!p)return ERROR;s=(LinkList)malloc(sizeof(LNode);s-date=e;(3);(4)return Ok;2.下面是一个有向图 G 采用邻接表存储结构的拓扑排序算法。请在_处填上适当内容,使其成为一个完整算法。typedef struct VNode VertexType data;ArcNode *firstarc;VNode,AdjListMAX_VERTEX_NUM;typedef struct ArcNode int adjvex;struct ArcNode *nextarc;InfoType *info;ArcNode;typedef struct AdjList vertices;int vexnum,arcnum;int kind;ALGraph;考试科目:数据结构共 5 页,第 4页 Status TopologicalSort(ALGraph G)vexnum-1 InitStack(S);for(i=0;inextarc)k=p-adjvex;if(!(-indegreek)(9)if(10)return ERROR;else return OK;编写一个算法求二叉树中叶子结点的个数(10 分)。2.已知 n 个顶点的带权图用邻接矩阵表示,试编写算法实现用 kruskal 算法构造最小生成树。(15 分)考试科目:数据结构共 5 页,第 5页