1、数据结构复习题doc一、单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。1.数据结构是()A.一种数据类型B.数据的存储结构C.一组性质相同的数据元素的集合D.相互之间存在一种或多种特定关系的数据元素的集合2.某带头结点的单链表的头指针为head,判定该链表为非空的条件是( ) A.head=NULL B.head-next=NULL C.head!=NULL D.head-next!=NULL 3.下列关于线性表的叙述中,不正确的是( )A.线性表是n个结点的有穷序列B.线性表可以为空表C.线性表的每一个结点有且仅有一个前趋和一个后继D.线性表结点
2、间的逻辑关系是1:1的联系4.设数组Am为循环队列Q的存储空间,front为队头指针,rear为队尾指针,则判定Q为满队列的条件是( ) A.(rear-front)%m= =1 B.front= =rear C.(rear-front)%m= =m-1 D.front= =(rear+1)%m 5.假设S=I AM A STUDENT,则运算substr(S,4,9)的结果为(B ) A.M A S B.M A STUDE C.A STUDENT D.STUD 6.连通图是指图中任意两个顶点之间( ) A.都连通的无向图 B.都不连通的无向图 C.都连通的有向图 D.都不连通的有向图7.从广
3、义表L=(x),y,x)中分解得到(x)的操作为( ) A. .tail(tail(head(L) B.head(tail(head(L) C.tail(head(head(L) D head(head(head(L)8.假设一棵完全二叉树按层次遍历的顺序依次存放在数组BTm中,其中根结点存放在BT0,若BTi中的结点有左孩子,则左孩子存放在(C ) A.BTi/2 B.BT2*i-1 C.BT2*i+1 D.BT2*i 9 .若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找关键字b的过程中,先后进行比较的关键字依次为( )A.f,d,b B.g,c,b C.f,
4、c,b D.g,d,b10.深度为k的二叉树至多有( )A.2k个结点B.2k-1个结点C.2k-1个结点D.2k-1-1个结点11.若用邻接矩阵表示一个有向图,则其中每一行包含的1的个数为( )A.图中每个顶点的入度 B.图中每个顶点的出度C.图中弧的条数 D.图中连通分量的数目12.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( )A.3,2,6,1,4,5 B.3,4,2,1,6,5C.1,2,5,3,4,6 D.5,6,4,2,3,113.二维数组A56采用按行为主序的存储方式,每个元素占3个存储单元,若A00的存储地址是1000,则A43的存储
5、地址是( )A.1081 B.1057 A.1027 D.101914.图的邻接矩阵表示法适用于表示( ) A.无向图 B.有向图 C.稠密图 D.稀疏图15.设哈希表长m=11, 哈希函数H(key)=key%11。表中已有4个结点: Addr(15)=4 Addr(38)=5 Addr(61)=6Addr(84)=7如用二次探测散列突,关键字为49的结点的地址是( )A.8 B.3 C.5 D.916.数据的四种基本逻辑结构是指( )A.数组、链表、树、图形结构 B.线性表、链表、栈队列、数组广义表C.线性结构、链表、树、图形结构D.集合、线性结构、树、图形结构17.下列关于线性表的叙述中
6、,不正确的是( )A.线性表是n个结点的有穷序列B.线性表可以为空表C.线性表的每一个结点有且仅有一个前趋和一个后继D.线性表结点间的逻辑关系是1:1的联系18.在一个单链表中,若p所指结点不是最后结点,则删除p所指结点的后继结点的正确操作是( )A.p=p-next B.p-next=p-nextC.p-next=p-next-next D.p-next=p18.栈和队列( )A.共同之处在于二者都是先进先出的特殊的线性表B.共同之处在于二者都是先进后出的特殊的线性表C.共同之处在于二者都只允许在顶端执行删除操作D.没有共同之处20.从广义表L=(d),c,d)中分解得到(d)的操作为(D
7、) A.head(head(head(L) B.head(tail(head(L) C.tail(head(head(L) D.tail(tail(head(L) 21.深度为k的二叉树至多有( )A.2k个结点B.2k-1个结点C.2k-1个结点D.2k-1-1个结点22.若用邻接矩阵表示一个有向图,则其中每一列包含的1的个数为( )A.图中每个顶点的入度 B.图中每个顶点的出度C.图中弧的条数 D.图中连通分量的数目 23.在数据结构中,从逻辑上可以把数据结构分成( )A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 24.算法分析的目的是
8、()A.辨别数据结构的合理性B.评价算法的效率C.研究算法中输入与输出的关系D.鉴别算法的可读性25.在线性表的下列运算中,不改变数据元素之间结构关系的运算是()A.插入 B.删除 C.排序 D.定位 26.按照二叉树的定义,具有3个结点的二叉树有( )种。 A. 3 B. 4 C. 5 D. 6 27.从广义表L=(d),c,d)中分解得到 (d) 的操作为( ) A.head(head(head(L) B.head(tail(head(L) C.tail(head(head(L) D.tail(tail(head(L) 28.若进栈序列为X,Y,Z,且进栈和出栈可以穿插进行,则不可能出现的
9、出栈序列为( )A. X,Y,Z B. Z,Y,X C. X,Z,Y D. Z,X,Y29.按照二叉树的定义,具有3个结点的二叉树有( )种形态。 A. 3 B. 4 C. 5 D. 6 30. 广义表L=( (a,b),(c,d)的表尾是( ) A. (a,b) B. (c,d) C. c,d D.(c,d) 31.若用邻接矩阵表示一个有向图,则其中每一行包含的1的个数为()A.图中每个顶点的入度 B.图中每个顶点的出度C.图中弧的条数 D.图中连通分量的数目32.下面二叉树中,符合完全二叉树定义的是 ( ) 33.下面的无向图中存在有( )个连通分量。A. 1 B. 2 C. 3 D. 4
10、二、填空题请在每小题的空格中填上正确答案。1.下面程序段的时间复杂度为 。s=0; for( i=0;in;i+) for(j=0;jn;j+) s+=aij; 2.已知指针p指向某单链表中的一个结点,则判别该结点为链表的终端结点的条件是_。 3.如果入栈序列是2,4,6,198,200,且出栈序列的第一个元素为200,则出栈序列中第30个元素为 。 4.已知广义表LS=(b),(a),则其长度为_, 深度为 。 5.若某二叉树的先根遍历序列为ACEBD,中根遍历序列为ECADB,则其后根遍历序列为_6.一棵含500个结点的完全二叉树的深度为 。7.含n个顶点的无向连通图中至少含有_条边。8.
11、若以2,3,4,6,8作为叶子结点的权值构造哈夫曼树,则其带权路径长度是 _。9.二叉树的第i层至多有_个结点。10. 在无向图G的邻接矩阵A中,若Aij等于1,则Aji等于_。 11.下面程序段的时间复杂度为_。i=1; k=2; while(in) k=k+10*i;i=i+1; 12.已知指针p指向某单链表中的一个结点,则判别该结点有且仅有一个后继结点的条件是_。 13.在完全二叉树结构中,对于编号为n的结点,如果有右孩子结点,则该结点的编号是_。 14.已知广义表LS=(a,b),(c),(d),则其深度为_。 15.画出二元组G表示的数据结构的逻辑结构图。 G=(K,R),其中 K=
12、a,b,c,d,e,f,g,h R=,16.一棵含500个结点的完全二叉树的深度为_。17.含n个顶点的无向连通图中至少含有_条边。18.若以2,4,6,7,8作为叶子结点的权值构造哈夫曼树,则其带权路径长度是 _。19.一棵二叉树中如果有5个叶子结点,则度为2的结点有_个。20.在具有n个顶点的无向图中最多存在_ 条边 。三、解答题1.某广义表的表头和表尾均为(x,y,z),画出该广义表的图形表示。2.有一份电文中共使用5个字符:a,b,c,d,e,它们出现的频率依次为4,7,5,2,9,试画出对应的哈夫曼树(请按左支树根结点的权小于等于右支树根结点的权的次序构造),并求出每个字符的哈夫曼编
13、码。3.已知哈希函数为H(key)=key%7,哈希表长度为7(哈希地址空间为0.6),待散列序列为:(25,48,32,50,68)。要求:(1)根据以上条件构造一哈希表,并用线性探测法解决有关地址冲突;(2)若要用该哈希表查找元素68,给出所需的比较次数。4.已知带权图的邻接表如下所示,其中边表结点的结构为:依此邻接表从顶点A出发进行深度优先遍历。(1)画出由此得到的深度优先生成树; (2)写出遍历过程中得到的从顶点C到其它各顶点的带权路径及其长度。(1) (2) (3) (4) (5) 5.将下列森林转换为一棵二叉树。6.试用Prim算法构造如下图的最小生成树,要求分步给出构造过程。(算
14、法从V4开始)7. 计算下列模式串的nextj函数值:8. 分别用邻接矩阵和十字链表给出下列有向图的存储结构表示。四、算法设计题1假设以带头结点的单链表的类型定义如下:顺序栈类型定义:typedefstructSElemType *base;SElemType *top;int stacksize;SqStack;试编写出栈、入栈操作算法。出栈算法功能:若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR。入栈算法功能:插入元素e为新的栈顶元素。说明,算法中不用考虑栈满的情况。出栈方法原型:Status Pop(SqStack &S, SElemType &e); 入栈方
15、法原型:Status Push(SqStack &S, SElemType e); 2. 假设以带头结点的单链队列的类型定义如下:单链队列的类型定义:typedefstructQNode QElemType data; structQNode*next QNode,*QueuePtr;Typedef struct QueuePtr front; /队头指针 QueuePtr rear; /队尾指针LinkQueue;试编写一算法,以完成队列Q的出队操作,即删除队列Q中的头元素,并用e返回其值。算法结构如下:Status DeQueue (LinkQueue &Q, QElemType &e) /若队列不空,则删除Q的对头元素,用e返回其值,并返回OK; 否则返回ERROR.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1