大工17春《数据结构》在线作业3答案

合集下载

2017数据结构复习题-答案

2017数据结构复习题-答案

复习(一)一、选择题1.下面关于线性表的叙述错误的是(D)。

A、线性表采用顺序存储必须占用一片连续的存储空间B、线性表采用链式存储不必占用一片连续的存储空间C、线性表采用链式存储便于插入和删除操作的实现D、线性表采用顺序存储便于插入和删除操作的实现2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(B )个空指针域。

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

A、 R-FB、 F-RC、(R-F+M)%MD、(F-R+M)%M4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(A)。

A、 BADCB、 BCDAC、 CDABD、CBDA5.设某完全无向图中有n个顶点,则该完全无向图中有(A )条边。

A、 n(n-1)/2B、 n(n-1)C、 n2D、 n2-16.设某数据结构的二元组形式表示为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是(B )。

A、线性结构B、树型结构C、物理结构D、图型结构7.下面程序的时间复杂为(B)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)8.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为(A )。

《数据结构》作业3参考答案

《数据结构》作业3参考答案

= 15
所以 (3,3) = (0,0) + 3 × 15 + 3 = 644 + 45 + 3 = 692
4.9 习题答案
第一步,计算 P 的 next 值,如图所示。
j
0
1
P
a
a
next[j]
-1
0
第二步,用 KMP 算法进行快速匹配,如下图。
0
1
234567
T
a
b
abbaab
P
a
a
b
j=1,next[1]=0
图 4.10(1)
(2).答案:
( , , ( ) , ( ))的图形表示和存储表示如图所示。
图 4.10(2)
4.11 习题答案
(1) Head(Tail(Tail(L1))) (2) Head(Head(Tail(L2))) (3) Head(Head(Tail(Tail(Head(L3))))) (4) Head(Head(Tail(Tail(L4)))) (5) Head(Tail(Head(L5))) (6) Head(Head(Tail(Head(Tail(L6)))))
a
a
j=0,next[0]=-1
aab
j=1,next[1]=0
aab
j=0,next[0]=-1
aab
ห้องสมุดไป่ตู้
j=0,next[0]=-1
aa
图 4.9
2 b 1 89 aA
b j=3,成功
4.10 习题答案 (1).答案:
( ( ), ( ), ( , ( , , )))的图形表示和存储表示如图所示。
数据结构作业3参考答案答案作业三数据结构作业题参考答案作业3及答案3及答案作业及答案

数据结构第3章作业答案

数据结构第3章作业答案

第3章作业答案一、填空1. 向量、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。

2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。

不允许插入和删除运算的一端称为栈底。

3. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

4.在具有n个单元的循环队列中,队满时共有n-1 个元素。

设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。

在进栈或进队操作时,按a1、a2、a3、a4次序每次进入一个元素。

假设栈或队的初始状态都是空。

现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是 A ,第二次出栈得到的元素是 B 是;类似地,考虑对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是 C ,第二次出队得到的元素是 D 。

经操作后,最后在栈中或队中的元素还有E个。

供选择的答案:A~D:①a1 ②a2 ③a3 ④a4E:①1 ②2 ③3 ④0答:ABCDE=2, 4, 1, 2, 2栈是一种线性表,它的特点是 A 。

设用一维数组A[1,…,n]来表示一个栈,A[n]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。

往栈中推入(PUSH)一个新元素时,变量T的值 B ;从栈中弹出(POP)一个元素时,变量T的值 C 。

设栈空时,有输入序列a,b,c,经过PUSH,POP,PUSH,PUSH,POP操作后,从栈中弹出的元素的序列是 D ,变量T的值是 E 。

供选择的答案:A:①先进先出②后进先出③进优于出④出优于进⑤随机进出B,C:①加1 ②减1 ③不变④清0 ⑤加2 ⑥减2D:①a,b ②b,c ③c,a ④b,a ⑤c,b ⑥a,cE:①n+1 ②n+2 ③n ④n-1 ⑤n-2答案:ABCDE=2, 2, 1, 6, 4在做进栈运算时,应先判别栈是否 A ;在做退栈运算时,应先判别栈是否 B 。

大工17秋《数据结构》在线作业1 100分答案

大工17秋《数据结构》在线作业1 100分答案

大工17秋《数据结构》在线作业1-0004
试卷总分:100得分:100
一、单选题(共10道试题,共50分)
1.下面关于串的概念的叙述中错误的是()。

(5分)
A.串是字符的有限序列
B.串既可以采用顺序存储,也可以采用链式存储
C.空串是由空格构成的串
D.模式匹配是串的一种重要运算
正确答案:C
2.一个有n个结点的有序单链表中,删除一个结点并仍然使链表有序的时间复杂度是()。

(5分)
A.O(1)
B.O(n)
C.O(n^2)
D.O(nlog2n)
正确答案:B
3.序列{a,b,c,d}顺序进栈,其出栈的顺序不可能为()。

(5分)
A.dcba
B.cdab
C.adcb
D.abcd
正确答案:B
4.以下四种数据结构中()不是线性结构。

(5分)
A.队列
B.线性表
C.栈
D.二叉树
正确答案:D
5.最适合用做链式队列的链表是()。

(5分)
A.带队首指针和队尾指针的循环单链表
B.带队首指针和队尾指针的非循环单链表
C.只带队首指针的非循环单链表
D.只带队首指针的循环单链表
正确答案:B。

数据结构c语言版第三版习题解答

数据结构c语言版第三版习题解答

数据结构c语言版第三版习题解答数据结构 C 语言版第三版习题解答在学习计算机科学与技术的过程中,数据结构是一门非常重要的基础课程。

而《数据结构C 语言版第三版》更是众多教材中的经典之作。

其中的习题对于我们理解和掌握数据结构的概念、原理以及算法实现起着至关重要的作用。

接下来,我将为大家详细解答这本书中的一些典型习题。

首先,让我们来看一道关于线性表的习题。

题目是这样的:设计一个算法,从一个有序的线性表中删除所有其值重复的元素,使表中所有元素的值均不同。

对于这道题,我们可以采用双指针的方法来解决。

定义两个指针 p和 q,p 指向线性表的开头,q 从 p 的下一个位置开始。

当 q 所指向的元素与 p 所指向的元素相同时,我们就将 q 所指向的元素删除,并将 q 向后移动一位。

当 q 所指向的元素与 p 所指向的元素不同时,我们将 p 向后移动一位,并将 q 所指向的元素赋值给 p 所指向的位置,然后再将 q 向后移动一位。

当 q 超出线性表的范围时,算法结束。

下面是用 C 语言实现的代码:```cvoid removeDuplicates(int arr, int n) {int p = 0, q = 1;while (q < n) {if (arrp == arrq) {for (int i = q; i < n 1; i++){arri = arri + 1;}(n);} else {p++;arrp = arrq;}q++;}}```再来看一道关于栈的习题。

题目是:利用栈实现将一个十进制数转换为八进制数。

我们知道,将十进制数转换为八进制数可以通过不断除以 8 取余数的方法来实现。

而栈的特点是后进先出,正好适合存储这些余数。

以下是 C 语言实现的代码:```cinclude <stdioh>include <stdlibh>define MAX_SIZE 100typedef struct {int top;int dataMAX_SIZE;} Stack;//初始化栈void initStack(Stack s) {s>top =-1;}//判断栈是否为空int isEmpty(Stack s) {return s>top ==-1;}//判断栈是否已满int isFull(Stack s) {return s>top == MAX_SIZE 1;}//入栈操作void push(Stack s, int element) {if (isFull(s)){printf("Stack Overflow!\n");return;}s>data++s>top = element;}//出栈操作int pop(Stack s) {if (isEmpty(s)){printf("Stack Underflow!\n");return -1;}return s>datas>top;}//将十进制转换为八进制void decimalToOctal(int decimal) {Stack s;initStack(&s);while (decimal!= 0) {push(&s, decimal % 8);decimal /= 8;}while (!isEmpty(&s)){printf("%d", pop(&s));}printf("\n");}int main(){int decimal;printf("请输入一个十进制数: ");scanf("%d",&decimal);printf("转换后的八进制数为: ");decimalToOctal(decimal);return 0;}```接下来是一道关于队列的习题。

西安交通大学17年3月课程考试《数据结构》作业考核试题标准答案

西安交通大学17年3月课程考试《数据结构》作业考核试题标准答案

西安交通大学17年3月课程考试《数据结构》作业考核试题一、单选题(共30 道试题,共60 分。

)1. 与数据元素本身的形式、内容、相对位置、个数无关的是数据的()A. 存储结构B. 逻辑结构C. 算法D. 操作正确答案:B2. 设一棵完全二叉树中有65个结点,则该完全二叉树的深度为()。

A. 8B. 7C. 6D. 5正确答案:B3. 利用直接插入排序法的思想建立一个有序线性表的时间复杂度为()。

A. O(n)B. O(nlog2n)C. O(n)D. O(1og2n)正确答案:C4. 栈的插入和删除操作在()进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置正确答案:A5. 二路归并排序的时间复杂度为()。

A. O(n)B. O(n)C. O(nlog2n)D. O(1og2n)正确答案:C6. 设某强连通图中有n个顶点,则该强连通图中至少有()条边。

A. n(n-1)B. n+1C. nD. n(n+1)正确答案:C7. 设一个顺序有序表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]正确答案:C8. 下列各种排序算法中平均时间复杂度为O(n)是()。

A. 快速排序B. 堆排序C. 归并排序D. 冒泡排序正确答案:D9. 如下陈述中正确的是()A. 串是一种特殊的线性表B. 串的长度必须大于零C. 串中元素只能是字母D. 空串就是空白串正确答案:A10. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置()?脚注(10)表示用10进制表示。

A. 688B. 678C. 692D. 696正确答案:C11. 适于对动态查找表进行高效率查找的组织结构是()A. 有序表B. 分块有序表C. 三叉排序树D. 线性链表正确答案:C12. 设某完全无向图中有n个顶点,则该完全无向图中有()条边。

数据结构Ch3习题答案

数据结构Ch3习题答案

Ch3栈和队列一.选择和填空:1.一个栈的入栈序列是a,b,c,d,e,则栈的可能的出栈序列是( D )。

A.edcab B.decab C.dceab D.abcde2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为(n-i+1)。

3.栈结构通常采用的两种存储结构是(顺序存储结构和链式存储结构)。

4.判定一个顺序栈S为空的条件是(最多元素为m)(S.top=0或S.top=S.base)。

5.判定一个顺序栈S为满的条件是(最多元素为m)(S.top=m或S.top-S.base=m)。

6.栈的特点是(先进后出),队列的特点是(先进先出)。

7.一个队列的入对序列是a,b,c,d,e,则出队序列是(a,b,c,d,e)。

8.判定一个顺序队列Q(最多元素为m)为空的条件是(Q.front=Q.rear=0,…,m)。

9.判定一个顺序队列Q(最多元素为m)为满的条件是(Q.rear-Q.front=m或Q.rear=m,Q.front=0)。

10.判定一个循环队列Q(最多元素为m)为空的条件是(Q.front=Q.rear=0,…m-1)。

11.判定一个循环队列Q(最多元素为m)为满的条件是(Q.front=(Q.rear+1)%m)。

12.循环队列用数组Q[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是((Q.rear-Q.front+m)%m)。

13.栈和队列的共同点是(是限定性的线性结构,只能在端点处进行插入删除操作)。

14.线性表、栈和队列都是(线性)结构,可以在线性表的(任何)位置插入和删除元素,对于栈,只能在(栈顶)位置插入和删除元素,对于队列只能在(队尾)插入元素和在(队头)删除元素。

15.向栈中压入元素的操作是(先压入元素,后移动指针或*S.top++=e)。

16.从栈中弹出元素的操作是(先移动指针,后弹出元素或e= - -*S.top)。

数据结构3-答案

数据结构3-答案

一、单选题:C D B A A A C B C C二、填空题:n n/2 7 n2+2n3+…..+(m-1)n m+1 只有根节点的二叉树逆序1000000 2000 最大24三、应用题1、参考答案A B C D E F G H10 001 11 0001 0110 0111 010 00002、0 1 2 3 4 5 6 7 8 9 1012 100 25 16 17 18 8 40 7(1) (2) (1) (1) (1) (1) (1) (3)(4)搜索成功的平均搜索长度为ASL succ = 19(1 + 2+ 1 + 1 + 1 + 1 +1+ 3+ 4) = 533、4、最小生成树或最小生成树不唯一,有两棵,如上所示。

5、四、算法设计题1、void Bucketsort ( ElementType A[ ], int N )12 45635 6 11 1618 1 24563{int Counter[ 3 ];int i, j, k;for ( i = 0; i < 3; i++ )Counter[ i ] = 0;for ( i = 0, i < N; i++ ) {if ( A[ i ] == false )Counter[ 0 ] ++;elseif ( A[ i ] == maybe )Counter[ 1 ] ++;elseCounter[ 2 ] ++;}k = 0;for ( i = 0; i < Counter[ 0 ]; i++ )A[ i ] = false;k += Counter[ 0 ];for ( i = 0; i < Counter[ 1 ]; i++ )A[ k+i ] = maybe;k += Counter[ 1 ];for ( i = 0; i < Counter[ 2 ]; i++ )A[ k+i ] = true;}2、int BinaryTree<Type> :: leaf ( BinTreeNode<Type> * ptr ) {if ( ptr == NULL ) return 0;else if ( ptr->leftChild == NULL && ptr->rightChild == NULL ) return 1;else return leaf ( ptr->leftChild ) + leaf ( ptr->rightChild );}3、int max=0;int Find_All_Path(Graph *G,int S,int T, int K)/{G->setMark(S,VIEITED);if(S==T) //找到了一条简单路径{ if (max<K) max=K; return(max); }elsefor(int p=G->first(S);p<G->n();p=G->next(S,p){if(G->getMark(p)==UNVISITED) Find_All_Path(G,p,T,k+1); //继续寻找}G->setMark(S,UNVIEITED); }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大工17春《数据结构》在线作业3
一、单选题(共 10 道试题,共 50 分。


1. 最短路径的生成算法可用()算法。

A. 普里姆
B. 迪杰斯特拉
C. 克鲁斯卡尔
D. 哈夫曼
正确答案:B 满分:5 分
2. 设一组初始记录序列为(5,2,6,3,8),以5为基准进行一趟快速排序的结果为()。

A. 2,3,5,8,6
B. 3,2,5,6,8
C. 3,2,5,8,6
D. 2,3,6,5,8
正确答案:B 满分:5 分
3. 线性表中采用折半查找法查找元素,该线性表应该有()特点。

A. 元素按值有序,且采用链式存储结构
B. 元素按值有序,且采用顺序存储结构
C. 采用顺序存储结构
D. 元素按值有序
正确答案:B 满分:5 分
4. 在1000个无序的元素用最快的速度挑选出其中前10个最大的元素,最好选用()排序法。

A. 冒泡排序
B. 快速排序
C. 基数排序
D. 堆排序
正确答案:D 满分:5 分
5. 有n个顶点和e条边的有向图进行拓扑排序时,总的计算时间为()。

相关文档
最新文档