数据结构附录习题及B卷答案答案
《数据结构》期终考试试卷(B卷)及答案

适用专业:一、单项选择题(每题2分,共40分)1.算法的时间复杂度是指( )A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数2.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行()。
A.p = q->next ; p->next = q->next; B.p = q->next ; q->next = p;C.q->next = q->next->next; q->next = q; D.p = q->next ; q->next = p->next; 3.下列叙述中正确的是( )A.线性表是线性结构 B. 栈与队列是非线性结构C.线性链表是非线性结构 D. 二叉树是线性结构4.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。
A.3,2,1 B.2,1,3 C.3,1,2 D.1,3,25.图的广度优先搜索类似于树的()次序遍历。
A.先根B.中根C.后根D.层次6.具有n个顶点的有向无环图最多可包含()条有向边。
A.n-1 B.n C.n(n-1)/2 D.n(n-1)7.已知单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度应为( ) 。
A.O(1) B.O(m) C.O(n) D.O(m+n)8.若要在单链表中的结点*p之后插入一个结点*s,则应执行的语句是( )。
A.s->next=p->next; p->next=s; B.p->next=s; s->next=p->next;C.p->next=s->next; s->next=p; D.s->next=p; p->next=s->next;9.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为( )。
2013级软件工程数据结构B卷答案及评分细则

10级软件工程专业《数据结构》试题B卷答案及评分细则一、选择题(每小题3分,共30分,选错不给分,选对给3分)1,C 2,A 3,D 4,C 5,B 6,C 7,B 8,B 9,A 10,A二、填空题(每空2分,共20分,填对给2分,填错不给分)1,2 4;2,SXSSXXSX3,-+A*BC/DE4,128 75,存储位置指针6,任意若干连续字符序列7,相同类型数据元素三、应用题1 解:其步骤为i1=index(S,S1,1)………………………………………………(2分)i2=index(S,S2,1)+3………………………………………………(2分)sub1=substr(S,i1,length(S)-i1+1) …………………………………(2分)sub2=substr(S,i2,length(S)-i2+1…………………………………………(2分) S3=concat(sub1, sub2) ………………………………………………(2分)2 解本题即为构造最小生成树,按照最小生成树的构造方法,构造如下:303解:其拓扑排序序列为152634;156234;152364;512634;516234;512364;5612344 解:按照题目要求构造的二叉树如下四、算法设计题由于队列是先进先出,而栈是先进后出,所以只有经过两个栈,即先在第一个栈里先进后出,再经过第二个栈后进先出来实现队列的先进先出。
因此用两个栈模拟一个队列运算就是用一个栈作为输入,而另一个栈作为输出。
当进队列时,总是将数据进入到作为输入的栈中。
在输出时,如果作为输出的栈已空,则从输入栈将已输入到输入栈的所有数据压入输出栈中,然后由输出栈输出数据;如果作为输出的栈不空,则就从输出栈输出数据。
显然,只有在输入、输出栈均为空时队列才为空。
…………………………(写出思想给5分)一个栈s1用来插入元素,另一个栈S2用来删除元素,删除元素时应将前一栈s1中的所有元素读出,然后进入到第二个栈s2中,算法描述如下:Void Enqueue(s1,x)……………………………………………(2分)stack s1;int x;{if(s1->top==0)Printf(“队列上溢“);ElsePush(s1,x);}Void Dequeue(s1,s2,x) ……………………………………………(2分)Stack s1,s2;Int x;{ S->top=0; /将s2清空While (!empty(s1) /将s1的所有元素退栈后压入s2,此时栈s1为空 Push(s2,pop(s1));Pop(s2,x); /弹出栈s2的栈顶元素(对首元素)并赋给xWhile (!empty(s2) /将剩于元素重新压入栈s1恢复为原s1中的顺序 Push(s1,pop(s2));}Int Queue_empty(s1)……………………………………………(1分) Stack s1;{if empty(s1)Return(1);ElseReturn(0);}。
数据结构B期末考试 B卷及参考答案

一、单项选择题(每小题2分,共30分)1.下列关于栈的叙述中,正确的是()。
A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对2.在数据结构中,与所使用的计算机硬件无关的是数据的()结构。
A.逻辑B.存储C.逻辑和存储D.物理3.以下说法正确的是()。
A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构4.六个元素按照6,5,4,3,2,1的顺序入栈,下列哪一个是合法的出栈序列?()A.546132 B.453126 C.346512 D.2341565.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为()A.8 B.9 C.10 D.116.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是()A.(100,80,90,60,120,110,130)B.(100, 120, 110,130,80, 60,90)C.(100,60,80,90,120,110,130)D.(100,80, 60,90, 120, 130,110)7.下列陈述中正确的是()A.二叉树是度为2的有序树B.二叉树中结点只有一个孩子时无左右之分C.二叉树中必有度为2的结点D.二叉树中最多只有两棵子树,并且有左右之分8.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为()A.e B.2e C.n2-e D.n2-2e9.栈和队列都是()A.限制存取位置的线性结构B.顺序存储的线性结构C.链式存储的线性结构D.限制存取位置的非线性结构10.在具有n个叶子结点的严格二叉树(即结点的度要么是0要么是2)中,结点总数为()A.2n+1 B.2n C.2n-1 D.2n-211.在循环双链表的p所指的结点之前插入s所指结点的操作是()。
数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)

数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)数据结构基础及深入及考试习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。
即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。
4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成(C)A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于(A)A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。
2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(E),删除一个元素需要移动的元素的个数为(A)。
A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。
”这个结论是(B)A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址(D)A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是(B)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是(A)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL7、非空的循环单链表head的尾结点P满足(C)A、p->ne某t==NULLB、p==NULLC、p->ne某t==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)A、O(1)B、O(n)C、O(n2)D、O(nlog2n)数据结构(第4版)习题及实验参考答案9、在一个单链表中,若删除p所指结点的后继结点,则执行(A)A、p->ne某t=p->ne某t->ne某t;B、p=p->ne某t;p->ne某t=p->ne某t->ne某t;C、p->ne某t=p->ne某t;D、p=p->ne某t->ne某t;10、在一个单链表中,若在p所指结点之后插入所指结点,则执行(B)A、->ne某t=p;p->ne某t=;B、->ne某t=p->ne某t;p->ne某t=;C、->ne某t=p->ne某t;p=;D、p->ne某t=;->ne某t=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点,则执行(C)A、->ne某t=p->ne某t;p->ne某t=;B、p->ne某t=->ne某t;->ne某t=p;C、q->ne某t=;->ne某t=p;D、p->ne某t=;->ne某t=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有1个前趋结点。
2010-2011(2)数据结构B卷及答案

安徽大学2010—2011学年第2学期《 数据结构 》考试试卷(B 卷) (闭卷 时间120分钟)考场登记表序号一、填空题(每小题1.5分,共15分) 1.含有36个元素的有序表,进行二分查找时的判定树的深度为 6 。
2.在一个无向图中,所有顶点的度数之和等于所有边数的 2 倍。
3. 由带权为9、2、5、7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为 44 。
4.由a ,b ,c 三个结点构成的二叉树,共有 5 种不同形态。
5.二维数组A[0‥5][5‥10]以行序为主序存储,每个元素占4个存储单元,且A[0][5]的存储地址是1000,则A[3][9]的地址是 1088 。
6.若串s=''soft ,则其子串个数是 11 。
7. 设循环队列的空间大小为M ,入队时修改队尾指针rear 的语句为 rear=(rear+1)%M 。
8.在顺序存储结构的线性表中,插入或删除一个数据元素大约需移动表中 一半 元素。
9.下列程序段的时间复杂度是 O(m*n) 。
for (i=0;i<n;i++) for (j=0;j<m;j++) A[i][j]+=5;10. 在数据结构中,与所使用的计算机无关的是数据的 逻辑 结构。
二、单项选择题(每小题2分,共20分)1. 数据结构可以用二元组来表示,它包括( A )集合D 和定义在D 上的( C )集合R 。
A 、数据元素B 、存储结构C 、元素之间的关系D 、逻辑结构2. 已知L 是一个不带头结点的单链表,p 指向其中的一个结点,选择合适的语句实现在院/系 年级 专业 姓名 学号答 题 勿 超 装 订 线 ------------------------------装---------------------------------------------订----------------------------------------线----------------------------------------p结点的后面插入一个结点s的操作(B)。
数据结构期末试卷及参考答案B

《数据结构》试卷(B)学号:姓名:日期:一.选择题(每小题2分,共30分,请写在答卷纸上):1.下面程序的时间复杂为()。
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)2.设某数据结构的二元组形式表示为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.图状结构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.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点5.设某棵二叉树的中序遍历序列为ABCD,先序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
A.BADCB.BCDAC.CDABD.CBDA6.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
数据结构试卷B卷(含答案)

数据结构试卷B卷(含答案)-CAL-FENGHAI.-(YICAI)-Company One1《数据结构》试卷B一、填空题(每空1分,共15分)1. 向量、栈和队列都是结构,可以在向量的位置插入和删除元素;对于栈只能在插入和删除元素;对于队列只能在插入和删除元素。
2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为。
不允许插入和删除运算的一端称为。
3. 数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的和运算等的学科。
4. 在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。
5. 在具有n个单元的循环队列中,队满时共有个元素。
6. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为;比较四次查找成功的结点数为;平均查找长度为。
二、判断正误(判断下列概念的正确性,并作出简要的说明。
)(每小题1分,共10分)()1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
()2. 在表结构中最常用的是线性表,栈和队列不太常用。
()3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。
()4. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。
()5.线性表的逻辑顺序与存储顺序总是一致的()6. 栈和队列是一种非线性数据结构。
()7. 栈和队列的存储方式既可是顺序方式,也可是链接方式。
()8. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。
()9. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。
()10. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。
三、单项选择题(每小题1分,共20分)()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构()2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为A.i B.n=i C.n-i+1 D.不确定()3. 判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0()4设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素a i,j(i≤j), 在一维数组B中下标k的值是:A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j( )5.具有n(n>0)个结点的完全二叉树的深度为 。
数据结构试卷-20201012-B卷参考答案

数据结构B卷参考答案与评分标准Ⅰ. 基本概念部分(共70分)1 (8分)C1 C2 C4 C9 C10 C11 C6 C12 C3 C5 C7 C8 或C1 C9 C2 C4 C10 C11 C12 C6 C3 C5 C7 C83个一组,每对一组得2分,一组中对第一个得1分,从错的地方开始不得分2 (8分)3 (6分)4 (6分)5 (按顺序序条语句2分)ltmp->next = fence->next;fence->next = ltmp;ltmp->prev = fence;ltmp->next->prev = ltmp;完全二叉树得3分,每下滤1步得1分7 (6分)从字面上理解,再次删除值为20的节点把22和24往上提一步也算对。
8 (1个1分,全对6分)1 2 5 3 6 9 7 4 8每三个一组得2分9 (6分)10 (1)e3,e1,e4,e2 不能。
e3先出栈,说明e1,e2都还在栈里,且e2处在e1的上面,若要出栈,则一定是e2先于e1出栈。
(2)e2,e4,e3,e1 可以。
e2 先出栈,此时只有e1在栈内。
把e3,e4进栈,再依次出栈即可得到。
(3)e3,e4,,e1,e2 不能。
e3先出栈,说明e1,e2都还在栈里,且e2处在e1的上面,若要出栈,则一定是e2先于e1出栈。
每个2分。
结论1分。
说明1分。
共6分11 (6分)Ⅱ. 综合应用部分(共30分)1void sort(){Link<Elem> *t,*p; //声明一个临时指针Link<Elem> *l = head; //声明一个临时指针并把表头赋给它head = NULL; //把表头清空while(l != NULL){ //如果链表不空t = l; //把第一个节点取出来l = l->next; //指针后移//插到合适的位置t->next = NULL;if(head == NULL){head = t;}else{p = head;if(t->value() <= p->value()){ //插到表头t->next = head;head = t;}else{while( p->next != NULL && p->next->value() > t->value()) p = p->next;if(p->next == NULL) p->next = t; //如果到了链表尾,则插入else{t->next = p->next->next;p->next = t;}}}}}2bool isPair(char *s){Stack<char> *stack;char cs;int i;stack = new AStack<char>();for(i = 0; i < strlen(s); i++){if(s[i] == '{') stack->push(s[i]);else if(s[i] == '}'){if(!stack->pop(cs)) return false;}}return (!stack->pop(cs));}3bool isSame(GTNode<Elem>* r1,GTNode<Elem>* r2){bool br = true;GTNode<Elem> * t1,*t2;if(r1 == NULL && r2 == NULL) return true;else if(r1 != NULL && r2 !== NULL){//根节点都不为空,判断值及相应的子树。
数据结构B答案

一、单项选择题(本大题共15小题,每小题2分,共30分) 1-5 BAACB 6-10 ADACA 11-15 ACCBB二、填空题(本大题共10个空,每空1分,共10分)16. e=d 17. O(n 2) 18. 17 71 19. 4 , 10 20. N-1 21.线性结构,树型结构,图型结构三、判断题(本大题共10小题,每个1分,共10分)22.× 23.√ 24.× 25. √ 26.√ 27. × 28.× 29.× 30.√ 31.×四、应用题(本大题共4小题,每小题10分,共40分)。
32.可能的序列:a b c a c b b a c b c a c b a .............(5分) 对应的操作序列依次为:(1)push(a), pop(a), push(b), pop(b), push(c), pop(c) (2)push(a), pop(a), push(b), push(c), pop(c), pop(b) (3)push(a), push(b), pop(b) , pop(a), push(c), pop(c) (4)push(a), push(b), pop(b), push(c), pop(c) , pop(a) (5)push(a), push(b), push(c), pop(c), pop(b) , pop(a).............(每个序列1分)33. (4) .............(6分)0 2 3 1 434.....................(画出此树可得7分)。
(2) a:0101, b:10, c:01000, d:11, e:011, f:000, g:01001,h:001 ................... (3分)35. 根据题目给定的散列函数H(K)=K%13,其值域为0~12,可设计用于指向单链表的散列表表头数组HT[0…12]。
数据结构与算法(Python版)《数据结构》参考答案(B卷)

第五次
24 38 40 46 56 79 [80 95]
第六次
24 38 40 46 56 79 80 95
0
1
2
3
4
5
6
7
8
9
10
11
12
78
15
03
57
45
20
31
23
36
12
查找成功的平均查找长度:ASLSUCC=14/10= 1.4
2.此二叉树的后序遍历结果是:EDCBIHJGFA
1.对2.对3.对4.对5.对
6.对7.对8.错9.错10.错
四.运算题(每小题10分,共30分)
1.
划分次序
划分结果
第一次
[38 24 40] 46 [56 80 95 79]
第二次
24 [38 40] 46 [56 80 95 79]
第三次
24 38 40 46 [56 80 95 79]
第四次
3.
图
深度优先序列
广度优先序列
邻接矩阵表示时
0,1,2,8,3,4,5,6,7,9
0,1,4,2,7,3,8,6,5,9
邻接表表示时
0,4,3,8,9,5,6,7,1,2
0,4,1,3,7,2,8,6,9,5
五.应用题(每小题10分,共30分)
1.链式存储结构略,前序ABDEC,中序DBEAC,后序DEBCA。
2.(18,5,16,19,21,23),(5,16,21,19,18,23)
3.深度优先:125364
广度优先:123456
最小生成树T的边集为E={(1,4),(1,3),(3,5),(5,6),(5,6)}
数据结构习题(包含全部答案解析)

数据结构习题(包含全部答案解析)数据结构习题(包含全部答案解析)1. 塔的问题题目描述:有三个塔,分别是A、B和C,A塔上有n个盘子,按照从小到大的顺序叠放。
现在要将这些盘子从A塔移动到C塔,并且每次只能移动一个盘子,并且在移动过程中保持大盘子在下,小盘子在上的顺序。
求移动的步骤。
解析:这道题可以使用递归来解决。
将问题分解为两个子问题:将n-1个盘子从A塔移动到B塔,然后将最后一个盘子从A塔移动到C 塔,最后再将n-1个盘子从B塔移动到C塔。
步骤如下:1)如果n等于1,直接将盘子从A塔移动到C塔;2)否则,执行以下步骤:a) 将n-1个盘子从A塔移动到B塔,使用C塔作为中转塔;b) 将最后一个盘子从A塔移动到C塔;c) 将n-1个盘子从B塔移动到C塔,使用A塔作为中转塔。
2. 链表问题题目描述:给定一个链表,判断链表是否存在环。
解析:这道题可以使用快慢指针的思想来解决。
定义两个指针fast和slow,初始时都指向链表的头节点。
fast指针每次向后移动两个节点,slow指针每次向后移动一个节点。
如果链表中存在环,则fast指针一定会在某个时刻追上slow指针。
步骤如下:1)定义两个指针fast和slow,初始时都指向链表的头节点;2)使用一个while循环,判断条件是fast指针不为空且其下一个节点也不为空;3)在循环中,fast指针每次向后移动两个节点,slow指针每次向后移动一个节点;4)如果fast指针和slow指针相遇,则链表存在环,返回true;5)如果fast指针和slow指针永远不相遇,则链表不存在环,返回false。
3. 栈的应用题目描述:给定一个只包含'('和')'的字符串,判断该字符串是否是有效的括号序列。
解析:这道题可以使用栈来解决。
遍历字符串的每一个字符,如果是左括号,将其压入栈中;如果是右括号,判断栈顶的字符是否与该右括号匹配,若匹配则出栈,若不匹配则该字符串不是有效的括号序列。
数据结构B试题及答案

一、单项选择题(2分×10=20分)1.若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用( D )存储方式最省时间。
A.单链表B.双链表C.单向循环链表D.顺序表2.将含有100个结点的完全二叉树从根开始自上向下,每层从左到右依次编号,且设根结点的编号为1,则编号69的结点的双亲的编号为( A )。
A. 34B. 35C. 33D. 无法确定3. 单循环链表的主要优点是(D )。
A. 不再需要头指针了B. 已知某结点的位置后,很容易找到其前驱C. 在进行插入、删除运算时,能更好地保证链表不断开D. 从表中任一结点出发都能扫描到整个链表4. 在长为n的顺序表中,向第i个元素(1≤i≤n+1)前插入一个元素需要向后移动( B )个元素。
A. n-iB. n-i+1C. n-i-1D. i5. 一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为( C )。
A. 5、4、3、2、1B. 4、5、3、2、1C. 4、3、5、1、2D. 1、2、3、4、56. 串是一种特殊的线性表,其特殊性表现在( B )。
A. 可以顺序存储B.数据元素是一个字符C可以链式存储 D.数据元素是多个字符7. 一棵5层满二叉树中,结点总数为(C )个。
A. 33B.32C.31D.308. 下列4棵二叉树,( B )是平衡树。
A. B. C. D.9. n个顶点的无向图中最多有(A )条边。
A. n(n-1)/2B. n(n-1)C. n(n+1)D. n(n+1)/210. 6个顶点的无向图中,至少有(A )条边才能保证是一个连通图。
A. 5B. 6C. 7D. 8二、判断题(1分×10=10分)(F )1. 线性结构的基本特征是:每个结点有且仅有一个直接前驱和一个直接后继。
(F ) 2. 二叉树是树的特殊情形。
(T )3. 存在这样的二叉树,其先序遍历与中序遍历得到的访问序列相同。
《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案数据结构第一章介绍数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。
数据结构的选择对于算法的效率有着重要的影响。
本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。
下面是一些选定的习题及其答案,供读者参考。
第二章线性表习题一:给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。
答案一:算法思路:1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置3. 当i>=j时,停止逆置算法实现:```pythondef reverse_list(L):i, j = 0, len(L)-1while i < j:L[i], L[j] = L[j], L[i]i += 1j -= 1```习题二:给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。
答案二:算法思路:1. 遍历线性表B中的每一个元素2. 将B中的元素依次插入到A的末尾算法实现:```pythondef merge_lists(A, B):for element in B:A.append(element)```第三章栈和队列习题一:编写一个算法,判断一个表达式中的括号是否匹配。
表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。
答案一:算法思路:1. 遍历表达式中的每一个字符2. 当遇到左括号时,将其推入栈中3. 当遇到右括号时,判断栈顶元素是否与其匹配4. 当遇到其他字符时,继续遍历下一个字符5. 最后判断栈是否为空,若为空则表示括号匹配算法实现:```pythondef is_matching(expression):stack = []for char in expression:if char in "([{":stack.append(char)elif char in ")]}":if not stack:return Falseelif (char == ")" and stack[-1] == "(") or (char == "]" and stack[-1] == "[") or (char == "}" and stack[-1] == "{"):stack.pop()else:return Falsereturn not stack```习题二:利用两个栈实现一个队列。
数据结构B答案

上海电机学院继续教育学院2017 学年上半年期末考试试卷B(数据结构) 课程试卷班级:成1675 学号:姓名:(本卷考试时间90分钟)题号一二三四五六总得分题分得分数据结构B卷参考答案一、选择题1.B2.B3.A4.A5.A6.B7.D8.C9.B 10.D二、填空题1. 顺序存储结构、链式存储结构2. 9,5013. 54. 出度,入度5. 06. e=d7. 中序8. 79. O(1)10. i/2,2i+111. (5,16,71,23,72,94,73)12. (1,4,3,2)13. j+1,hashtable[j].key==k14. return(t),t=t->rchild三.程序填空1.答:①i=1②a[i]>b2.答:③(n%10)*(n%10_)④n/10⑤n四.试编以下完整程序:1.有一函数x (x<1)y= 2x+10 (1≤x<10)3x+9 ( x≥10)写一程序,输入x,输出y值。
1.#include<iostream.h>void main(){ float x,y;cin>>x;if(x<1) y=x;else if(x<10) y=2*x+10;else y=3*x+9;cout<<"x= "<<x<<" y= "<<y<<endl;}2.输入一行字符到数组C[80]中,分别统计其中大写和小写英文字母的个数。
以上功能可反复直至选择退出。
#include <iostream.h>#include <stdio.h>#include <string.h>void main(){int k,m=0,b,p=0;char c[80],n='y';do{cout<<"请输入字符"<<endl;gets(c);k=strlen(c); //计算字符数cout<<"一共有"<<k<<"个字符"<<endl;for(b=0;b<k;b++)if(c[b]>='A'&&c[b]<='Z')m++; //计算大写英文个数else if(c[b]>='a'&&c[b]<='z')p++; //计算小写英文个数cout<<"继续吗?(y/n)";cin>>n;}while(n=='y');cout<<"有"<<p<<"小写英文字符"<<endl;cout<<"有"<<m<<"大写英文字符"<<endl; }。
数据结构试题及答案(十套)

数据结构试题及答案(十套)数据结构试题及答案(十套)一、选择题1. 数据结构是指()。
A. 存储数据的方式B. 数据的逻辑结构和物理结构C. 数据的存储结构和存储方式D. 数据的逻辑结构、存储结构和存储方式答案:D2. 在数据结构中,线性表的存储方式包括()。
A. 顺序存储和链式存储B. 数组存储和链表存储C. 顺序存储、链表存储和索引存储D. 顺序存储、链表存储和树形存储答案:A3. 栈是一种()的数据结构。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C4. 队列是一种()的数据结构。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:A5. 二叉树中,度为0的节点称为()。
A. 叶子节点B. 根节点C. 中间节点D. 子节点答案:A6. 以下哪个排序算法是稳定的?A. 快速排序B. 选择排序C. 插入排序D. 希尔排序答案:C7. 图中表示顶点之间关系的边的数量称为()。
A. 顶点度数B. 边数C. 路径数D. 网络答案:B8. 哈希表通过()来实现高效的查找操作。
A. 散列函数B. 排序算法C. 遍历操作D. 顺序存储答案:A9. 平衡二叉树是一种具有左右子树高度差不超过()的二叉树。
A. 0B. 1C. 2D. 3答案:B10. 在链表中,删除节点的操作时间复杂度是()。
A. O(1)B. O(logn)C. O(n)D. O(nlogn)答案:A二、填空题1. 在顺序存储结构中,元素之间的逻辑关系由()表示。
答案:下标2. 二叉查找树的中序遍历结果是一个()序列。
答案:递增3. 哈希表通过散列函数将关键字映射到()上。
答案:地址4. 图的邻接表中,每个顶点的所有邻接点链接成一个()。
答案:链表5. 位运算符中的左移和右移运算都是对二进制数进行()操作。
答案:移位三、解答题1. 简要介绍顺序存储和链式存储这两种线性表的存储方式,并比较它们的优缺点。
答案:顺序存储是将元素按照逻辑顺序依次存储在一块连续的存储空间中,通过元素的下标可以直接访问到元素。
《 数据结构B卷 》期末考试试卷附答案

《数据结构B卷》期末考试试卷附答案一、名词解释(每题2分,共10分)1. 数据类型2. 线性表3. 队列4. 串5. 图二、判断正误(正确打√,错误划×,每题1分,共10分)1.算法必须有输入参数。
( )2.链表能够动态分配结点空间。
( )3.栈是一种先进先出的线性表。
( )4.二维数组能够实现随机存取。
( )5.在二叉树的第i层上至多有2i-1个结点(i≥1)。
( )6.在有向图中,<v1,v2>与<v2,v1>是两条不同的边。
( )7.邻接表只能用于有向图的存储。
()8.有向图不能进行广度优先遍历( )9.平均查找长度ASL可作为衡量一个查找算法效率高低的标准。
( )10.所有的内部排序算法都是稳定的。
( )三、填空(每空2分,共10分)1.线性表、栈和队列都是( )结构。
2.栈是一种特殊的线性表,允许插入和删除运算的一端称为()。
3.队列的出队操作总是在( )进行。
4.按存储结构不同,串可分为( )。
5.深度为k 的完全二叉树至少有( )个结点。
四、选择题(单选或多选)(每题2分,共30分)1.算法原则上都是能够由机器或人完成的。
整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。
这是算法的( )。
A. 正确性B. 有穷性C. 确定性D. 可行性2.设一棵二叉树中,度为2的结点数为9,则该二叉树的叶结点的数目为( )。
A.10 B. 11 C. 12 D. 不确定3.某二叉树结点的先根序列为E、A、C、B、D、G、F,对中根遍历的序列为A、B、C、D、E、F、G。
该二叉树结点的后根遍历的序列为( )A. [B 、D 、C 、A 、F 、G 、E]B. [B 、D 、C 、F 、A 、G 、E]C. [E 、G 、F 、A 、C 、D 、B]D. [E 、G 、A 、C 、D 、F 、B]4.关于队列的说法正确的是()A. 先进先出B. 属于非线性结构C. 只能采用顺序存储D.属于散列结构5.用单链表表示的链式队列的队尾是在链表的( )位置A. 表尾B. 表头C. 表中D. 任意6.树的非叶子结点是()。
数据结构课后答案

6.4 补考练习题及参考答案6.4.1 单项选择题1. 递归函数()(1)(1)f n f n n n =-+>的递归出口是_______。
A. (1)f =1B. (1)f =0C. (0)f =0D. ()f n n =答:当n=0时,(1)0f =。
本题答案为B 。
2. 递归函数()(1)(1)f n f n n n =-+>的递归体是________。
A. (1)1f =B. (0)0f =C. ()(1)f n f n n =-+D. ()f n n =答:递归体反映递归过程。
本题答案为C 。
3. 121()...1223(1)f n n n =+++⨯⨯⨯+,递归模型为_____。
A. 121()...1223(1)f n n n =+++⨯⨯⨯- B. 121()...(1)1223(1)f n f n n n=++++-⨯⨯-⨯ C. 1(1)2f = 1()(1)(1)f n f n n n =-+⨯- D. 1()(1)(1)f n f n n n =-+⨯- 答:递归模型由两部分组成,一是递归出口,另一是递归体,上述选项中只有C 符合条件。
本答案为C 。
4.将递归算法转换成对应的非递归算法时,通常需要使用________保存中间结果。
A.队列B.栈C.链表D.树答:递归计算过程是:先进行递归分解,知道递归出口为止,然后根据递归出口的结果反过来求值。
这样通常需要后面的递推式先计算出结果,这正好满足栈的特点。
所以本题答案为B 。
6.4.2填空题1.将转化成递归函数,其递归出口是___①____,递归体是___②___答:①(1)0f = ②()(1)f n f n =-+2.有如下递归过程:void print(int w){int i;if (w!=1){ print(w-1);for(i=1;i<=w;i++)printf(“%3d”,w);printf(“\n”);}}调用语句print(4)的结果是________。
数据结构网参考答案

数据结构试题参考答案第一章绪论一、选择题:二、填空题:1、(l)结点的集合(2)结点有序对的集合2、(l)开始结点(2)终端结点3、(l)线性结构(2)非线性结构4、前驱5、顺序方法或索引方法6、顺序7、(l)逻辑结构(2)存储8、时间复杂度9、问题规模10、数组11、(1)数据元素(2)数据元素间关系12、(1)集合(2)线性结构(3)树形结构(4)图状结构或网状结构。
13、(1)有穷性(2)确定性(3)可行性。
14、O(n)15、(1)一对一(2)一对多(3)多对多三、判断题(正确的在括号中记√,错误的记×)四、应用题1、评价好的算法有四个方面。
一是算法的正确性;二是算法的易读性;三是算法的健壮性;四是算法的时空效率(运行)。
2、将学号、姓名、平均成绩看成一个记录(元素,含三个数据项),将100个这样的记录存于数组中。
因一般无增删操作,故宜采用顺序存储。
typedef struct{int num;//学号char name[8];//姓名float score;/平均成绩}node;node student[100];3、应从两方面进行讨论:如通讯录较少变动(如城市私人电话号码),主要用于查询,以顺序存储较方便,既能顺序查找也可随机查找;若通讯录经常有增删操作,用链式存储结构较为合适,将每个人的情况作为一个元素(即一个结点存放一个人),设姓名作关键字,链表安排成有序表,这样可提高查询速度。
4、(1)O(1) (2)O(n2) (3)O(n3)五、综合题:1、struct node{int year,month,day; };typedef struct{int num;//帐号char name[8];//姓名struct node date;//开户年月日int tag;//储蓄类型,如:0- 零存,1- 一年定期……float put;//存入累加数;float interest;//利息float total;//帐面总数}count;2、第一层FOR循环判断n+1次,往下执行n次,第二层FOR执行次数为(n+(n-1)+(n-2)+…+1),第三层循环体受第一层循环和第二层循环的控制,其执行次数如下表:i= 1 2 3 … nj=n n n n … nj=n-1 n-1 n-1 n-1 …… … … …j=3 3 3j=2 2 2j=1 1执行次数为(1+2+…+n)+(2+3+…+n)+…+n=n*n(n+1)/2-n(n2-1)/6。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构附录A 样卷一一、判断题:(10 分)正确在括号内打√,错误打×( ) 1.在单链表中,头结点是必不可少的。
()2.如果一个二叉树中没有度为1的结点,则必为满二叉树。
( ) 3. 循环链表的结点结构与单链表的结点结构完全相同,只是结点间的连接方式不同。
( ) 4. 顺序存储结构只能用来存放线性结构;链式存储结构只能用来存放非线性结构。
( ) 5. 在一个大根堆中,最小元素不一定在最后。
( ) 6. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和。
()7. 在采用线性探测法处理冲突的散列表中,所有同义词在表中相邻。
()8. 内部排序是指排序过程在内存中进行的排序。
()9. 拓扑排序是指结点的值是有序排列。
( )10. AOE网所表示的工程至少所需的时间等于从源点到汇点的最长路径的长度。
二、选择题(30分, 每题1.5分)1.有一个含头结点的单链表,头指针为head, 则判断其是否为空的条件为:________________A. head=NIL B.head^.next=NIL C. head^.next=head D. head<>NIL或 A. head==NULL B. Head->next==NULL C. head->next==head D. Head!=NULL 2.非空的循环单链表head的尾指针p满足______________。
A. p^.next=NILB. p=NILC. p^.next=headD. p=head或A. p->next=NULLB. p==NULLC. P->next==headD. p ==head3.链表不具有的特点是。
A、可随机访问任一个元素B、插入删除不需要移动元素C、不必事先估计存储空间D、所需空间与线性表的长度成正比4.若某链表中最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用存储方式最节省运算时间。
A、单链表B、双链表C、单循环链表D、带头结点的双循环链表5.若线性表最常用的操作是存取第i个元素及其前驱的值,则采用存储方式节省时间。
A、单链表B、双链表C、单循环链表D、顺序表6.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能的是。
A、 A,B,C,D B、D,C,B,AC、 A,C,D,B D、D,A,B,C7.一个队列的入队序列是1,2,3,4,则队列的输出序列是。
A、4,3,2,1B、1,2,3,4C、1,4,3,2 D、3,2,4,18.设循环队列中数组的下标范围是1~n,其头尾指针分别为f,r,若队列中元素个数为。
A、r-f B 、r-f+1 C、(r-f+1)mod n D、(r-f+n)mod n9.串是。
A、不少于一个字母的序列B、任意个字母的序列C、不少于一个字符的序列D、有限个字符的序列10.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续内存单元中,则A[5,5]的地址是。
A、1140B、1145C、1120D、112511.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号为49的结点的左孩子的编号为。
A、98B、99C、50 D、4812.对二叉树从1开始编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用实现编号。
A、先序遍历B、中序遍历C、后序遍历 D、从根开始进行层次遍历13.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是的二叉树。
A、空或只有一个结点B、高度等于其结点数C、任一结点无左孩子D、任一结点无右孩子14.在有n个叶子结点的哈夫曼树中,其结点总数为。
A、不确定B、2nC、2n+1D、2n-115.一个有n个顶点的无向图最多有条边。
A、nB、n(n-1)C、n(n-1)/2 D、2n16.任何一个无向连通图的最小生成树。
A、只有一棵B、有一棵或多棵C、一定有多棵D、可能不存在17.一组记录的关键字为(46,79,56,38,40,84),利用快速排序的方法,以第一个记录为基准得到的一次划分结果为。
A、38,40,46,56,79,84B、40,38,46,79,56,84C、40,38,46,56,79,84D、40,38,46,84,56,7918.已知数据表A中每个元素距其最终位置不远,则采用排序算法最节省时间。
A、堆排序B、插入排序C、快速排序D、直接选择排序19.下列排序算法中,算法可能会出现下面情况:初始数据有序时,花费时间反而最多。
A、堆排序B、冒泡排序C、快速排序 D、SHELL 排序20.对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为的结点开始。
A、100B、60C、12 D、15三、填空题(40分)1 在顺序表(即顺序存储结构的线性表)中插入一个元素,需要平均动个元素.2. 快速排序的最坏情况,其待排序的初始排列是 .3. 为防止在图中走回,应设立 .4. 一个栈的输入序列为123,写出不可能是栈的输出序列。
5. N个结点的二叉树,采用二叉链表存放,空链域的个数为 .6. 要在一个单链表中p所指结点之后插入s所指结点时,应执行和的操作.7.Dijkstra算法是按的次序产生一点到其余各顶点最短路径的算法.8.在N个结点完全二叉树中,其深度是 .9.对二叉排序树进行遍历, 可得到结点的有序排列.10.设一哈希表表长M为100 ,用除留余数法构造哈希函数,即H(K)=K MOD P(P〈=M〉, 为使函数具有较好性能,P应选11.单链表与多重链表的区别是12.深度为6(根层次为1)的二叉树至多有个结点。
13.已知二维数组A[0..20][0..10]采用行序为主方式存储,每个元素占4个存储单元,并且A[0][0]的存储地址是1016, 则A[10][5]的存储地址是14.循环单链表La中,指针P所指结点为表尾结点的条件是15.在查找方法中,平均查找长度与结点个数无关的查找方法是。
16.队列的特性是17.具有3个结点的二叉树有种18.已知一棵二叉树的前序序列为ABDFCE,中序序列为DFBACE,后序序列为19.已知一个图的邻接矩阵表示,要删除所有从第i个结点出发的边,在邻接矩阵运算是四、构造题:(30 分)1.已知关键字序列为:(75, 33, 52, 41, 12, 88, 66, 27)哈希表长为10,哈希函数为:H(k)=K MOD 7, 解决冲突用线性探测再散列法,构造哈希表,求等概率下查找成功的平均查找长度。
2.已知无向图如图1所示,(1)给出图的邻接表。
(2)从A开始,给出一棵广度优先生成树。
3.给定叶结点权值:(1,3,5,6,7,8),构造哈夫曼树,并计算其带权路径长度。
4.从空树开始,逐个读入并插入下列关键字,构造一棵二叉排序树:(24,88,42,97,22,15,7,13)。
5.对长度为8的有序表,给出折半查找的判定树,给出等概率情况下的平均查找长度。
6.已知一棵树如图2所示,要求将该树转化为二叉树。
五、算法设计题(40分)[算法题可用类PASCAL或类C语言,每题20分]1.已知一棵二叉树采用二叉链表存放,写一算法,要求统计出二叉树中叶子结点个数并输出二叉树中非终端结点(输出无顺序要求)。
2.编写算法,判断带头结点的双循环链表L是否对称。
对称是指:设各元素值a1,a2,...,a n, 则有a i=a n-i+1即指:a1= a n,a2= a n-1 。
结点结构为prior data next数据结构附录B 样卷二一、简答题(15分,每小题3分)1.简要说明算法与程序的区别。
2.在哈希表中,发生冲突的可能性与哪些因素有关?为什么?3.说明在图的遍历中,设置访问标志数组的作用。
4.说明以下三个概念的关系:头指针,头结点,首元素结点。
5.在一般的顺序队列中,什么是假溢出?怎样解决假溢出问题?二、判断题(10分,每小题1分)正确在括号内打√,错误打×( )(1)广义表((( a ), b), c ) 的表头是(( a ), b),表尾是( c )。
( )(2)在哈夫曼树中,权值最小的结点离根结点最近。
( )(3)基数排序是高位优先排序法。
( )(4)在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过1。
( )(5)在单链表中,给定任一结点的地址p,则可用下述语句将新结点s插入结点p 的后面:p->next = s; s->next = p->next;( )(6)抽象数据类型(ADT)包括定义和实现两方面,其中定义是独立于实现的,定义仅给出一个ADT的逻辑特性,不必考虑如何在计算机中实现。
( )(7)数组元素的下标值越大,存取时间越长。
( )(8)用邻接矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。
( )(9)拓扑排序是按AOE网中每个结点事件的最早发生时间对结点进行排序。
( )(10)长度为1的串等价于一个字符型常量。
三、单项选择题(10分, 每小题1分)1.排序时扫描待排序记录序列,顺次比较相邻的两个元素的大小,逆序时就交换位置。
这是哪种排序方法的基本思想?A、堆排序B、直接插入排序C、快速排序D、冒泡排序2.已知一个有向图的邻接矩阵表示,要删除所有从第i个结点发出的边,应该:A)将邻接矩阵的第i行删除 B)将邻接矩阵的第i行元素全部置为0C)将邻接矩阵的第i列删除 D)将邻接矩阵的第i列元素全部置为03.有一个含头结点的双向循环链表,头指针为head, 则其为空的条件是:A. head->priro==NULLB. head->next==NULLC. head->next==headD. head->next-> priro==NULL4. 在顺序表 ( 3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30 ) 中,用折半法查找关键码值11,所需的关键码比较次数为:A) 2 B) 3 C) 4 D) 55. 以下哪一个不是队列的基本运算?A)从队尾插入一个新元素 B)从队列中删除第i个元素C)判断一个队列是否为空 D)读取队头元素的值6. 在长度为n的顺序表的第i个位置上插入一个元素(1≤ i ≤n+1),元素的移动次数为:A) n – i + 1 B) n – i C) i D) i – 1 7.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为:A) 顺序表 B) 用头指针表示的循环单链表C) 用尾指针表示的循环单链表 D) 单链表8.对包含n个元素的哈希表进行查找,平均查找长度为:A) O(log2n) B) O(n) C) O(nlog2n) D) 不直接依赖于n9.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号最大的非叶结点的编号为:A、48B、49C、50D、5110.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,则其左子树中结点数目为:A)3 B)2 C)4 D)5四、填空题(10分,每空1分)1.填空完成下面一趟快速排序算法:int QKPass ( RecordType r [ ], int low, int high){ x = r [ low ];while ( low < high ){while ( low < high && r [ ]. key >= x.key )high - -;if ( low < high ){ r [ ] = r [ high ]; low++; }while ( low < high && r [ ]. key < x. key )low++;if ( low < high ){ r [ ] = r [ low ]; high--; }}r [ low ] = x; return low ;}2. 假设用循环单链表实现队列,若队列非空,且队尾指针为R, 则将新结点S加入队列时,需执行下面语句:;;R=S;3.通常是以算法执行所耗费的和所占用的来判断一个算法的优劣。