智慧树数据结构答案2018知到数据结构答案章测试答案以下
搜索薇芯松丛号,选修宝,得完整答案
1第一单元章节测试 题目 图书馆的数目检索系统采用 关系的数据结构。 是相互之间存在一种或多种特定关系的数据元素的集合。 ( )是一个值的集合和定义在这个值集上的一组操作的总称。 算法的确定性是指 ( ) 第二单元章节测试 题目 线性表中的数据元素有一个前驱多个后继。 用顺序结构存储,删除最后一个结点时,( ) 链表中逻辑上相邻的元素的物理地址__________相邻。
搜索薇芯松丛号,选修宝,得完整答案 第三章单元测试 . 10 .1
若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是( ); . A. SXSSXXXX . B. SXXSXSSX . C. SXSXXSSX . D. SSSXXSXX . .2
设计一个迷宫求解的算法,采用___________数据结构最佳。 . A. 线性表的顺序存储结构 . B. 栈 . C. 队列 . D. 线性表的链式存储结构 . .3
循环队列存储在数组A[0..m-1],则出队时的操作为( )
. A. front=front+1 . B. front=(front+1)mod (m-1) . C. front=(front+1)mod m . D. front=(front mod m)+1 . .4
1.试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。BOOLSymmetry(char a[]){ int i=0; Stack s; InitStack(s); ElemType x; while(a[i]!='&' && a[i]){ _________ i++; } if(!a[i]) return
FALSE; i++; while(a[i]){ Pop(s,x); if(x!=a[i]){ DestroyStack(s); return FALSE; } i++; } return TRUE;}
. A. Pop(s,a[i++]) . B. Push(s,a[i++]) . C. Push(s,a[i]) . D. Pop(s,a[i]) .
.5 Status SymmetryString(char* p){ Queue q; if(!InitQueue(q)) return 0; Stack s; InitStack(s); ElemType e1,e2; while(*p){ Push(s,*p); EnQueue(q,*p); p++; } while(!StackEmpty(s)){ ( ) DeQueue(q,e2); if(e1!=e2) return FALSE; } return OK;}
. A. Pop(s,e1); . B. Push(s,*p); . C. EnQueue(q,*p) . D. P--P--P--P--P--P--P--P-- .
答案 错 一定不会移动其它结点位置 不一定- 答案 线性- 数据结构- 数据类型 算法中的每一条指令必须有确切的含义
设s=’I AM A STUDENT’ , t=’GOOD’ ,则Concat(Substring(s,6,2),Concat(t,SubString(s,7,8)))=( ) . A. A GOODWORKER . B. ST GOODSTUDENT . C. A GOOD STUDENT . D. A GOOD WORKER .
.2 空串与空格串是相同的,这种说法____。 . A. . B. 不 . .3
设串sl=″Data Structures with Java″,s2=“it″,则子串定位函数index(s1,s2)的值为( ) ; . A. 15 . B. 16 . C. 17 . D. 18 .
.4 串的长度是指( ) . A. 串中所含不同字母的个数 . B. 串中所含字符的个数 . C. 串中所含不同字符的个数 . D. 串中所含非空格字符的个数 . .5
【判断题】(2分) .
串是一种数据对象和操作都特殊的线性表。 . A. 对 . B. 错 .
第五章单元测试 .
1 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是______。 . A. 80 . B. 100 . C. 240 . D. 270 .
.2 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置为1000,计算数组A按行存储时元素A[14]第一个字节的位置( ) ; . A. 1018 . B. 1024 . C. 1030 . D. 1072 . .3
若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点( )。 . A. . B. 错误 . .4
广义表((()),a,((b,c),(),d),(((e))))的长度为( ) ; . A. 3 . B. 4 . C. 5 . D. 2 . .5 下面说法不的是 ( )。
. A. 广义表的表头总是一个广义表 . B. 广义表的表尾总是一个广义表 . C. 广义表难以用顺序存储结构 . D. 广义表可以是一个多层次的结构 .
.6 1.试按教科书5.5节图5.10所示的结点结构编写复制广义表的递归算法。// 由广义表L复制广义表TintCopyGList(GList& T,GList& L) { if(!L) T=NULL; else{
T=newGLNode; if(!T)exit(OVERFLOW); T->tag=L->tag;
if(L->tag==ATOM)T->atom=L->atom;
else{ ________ CopyGList(T->tp,L->tp); } } return OK;}
. A. A.CopyGList(T,L) . B. CopyGList(L->tp,T->tp); . C. CopyGList(L->hp,T->hp) . D. CopyGList(T->hp,L->hp); .
第六章单元测试 .
1 已知一棵树边的集合为{, ,
一棵二叉树中,叶子的个数为10,则其度为2的结点的个数为 ( ) ; . A. 9 . B. 10 . C. 11 . D. 12 . .3
假如一棵二叉树的中序遍历结果为ABCD,则结点A和结点D的关系一定不是( );
. A. 结点A是结点D的双亲结点 . B. 结点A是结点D的右子树上的结点 . C. 结点A是结点D的左子树上的结点 . D. 结点A与结点D具有共同的双亲的右子树上的结点 . .4
已知一棵树边的集合为{, ,
.5 一棵哈夫曼树有17个结点,则其叶子结点的个数是 _________ 。 . A. 7 . B. 8 . C. 9 . D. 10 .
.6 写递归算法,将二叉树中所有结点的左、右子树相互交换。Status ExchangeBiTree(BiTree& T){ BiTreep; if(T){ p=T->lchild; T->lchild=T->rchild; T->rchild=p; ExchangeBiTree(T->lchild); __________ } returnOK;} . A. A.ExchangeBiTree(p); . B. ExchangeBiTree(T->rchild); . C. ExchangeBiTree(T->lchild->rchild) . D. ExchangeBiTree(T); .
.7 试写一个算法,为一棵二叉树建立后序线索二叉树。StatusPostOrderThreading(BiThrTree& T,BiThrTree& pre);//首先建立后序线索树StatusFindNextInBiThrTree(BiThrTree& q,TElemType *p);//再进行查找 // 后序线索二叉树的算法
StatusPostOrderThreading(BiThrTree& Thrt,BiThrTree& T)
{ BiThrTree pre; Thrt=new BiThrNode; // 为线索二叉树建立头结点 if(!Thrt) exit(OVERFLOW); Thrt->LTag=Link; Thrt->RTag=Thread; Thrt->rchild=Thrt;// 右子树回指 if(!T) Thrt->lchild=Thrt;// 若二叉树空,左子树回指 else{ Thrt->lchild=T; pre=Thrt;
PostThreading(T,pre);// 后序遍历进行后序线索化 pre->rchild=Thrt;//最后一个结点线索化
pre->RTag=Thread; Thrt->rchild=pre; } return OK;} StatusPostThreading(BiThrTree& T,BiThrTree& pre) { if(T){
if(T->LTag==Link)PostThreading(T->lchild,pre); if(T->RTag==Link)PostThreading(T->rchild,pre);
if(!T->lchild){ T->LTag=Thread; ___________ } if(pre &&!pre->rchild){
pre->RTag=Thread; pre->rchild=T; } pre=T; return OK;}
. A. T->lchild=pre; . B. pre->lchild=T . C. T->rchild=pre . D. pre->rchild=T . .8
1.编写递归算法,将二叉树中所有结点的左、右子树相互交换。 StatusExchangeBiTree(BiTree& T){ BiTree p; if(T){
p=T->lchild; T->lchild=T->rchild; T->rchild=p;
ExchangeBiTree(T->lchild); } return OK; }
A. ExchangeBiTree(p); . B. ExchangeBiTree(T->rchild); . C. ExchangeBiTree(T->lchild->rchild); . ExchangeBiTree(T); . 第七章单元测试 .
下图中结点B的出度为( ) A. 0 . B. 1 . C. 2 . D. 3 . .2
对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小为( ) ; . A. n ×n . B. (n-1)× (n-1) . C. (n-1)×n . D. n×(n+1) .
.3 采用邻接表存储的图的宽度优先遍历算法类似于二叉树的( )。 . A. 先序遍历 . B. 中序遍历 . C. 后序遍历 . D. 层次遍历 . .4
下面的无向带权图的最小生成树包含的边有( )
. A. ae ge gf eb bc cd . B. ae ed dc cb eg df . C. ag gf fd dc cb be . D. ae eb bc cd df eg . .5
} D. 判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以利用( );
. A. 求关键路径的方法 . B. 求最短路径的Dijkstm方法 . C. 宽度优先遍历算法 . D. 深度优先遍历算法 .
.6 编写算法实现建立图的邻接表 StatusCreateAG(ALGraph &G)
{ int n,e,k,i,j; cout<<\请输入顶点数:\ cin>>n; cout<<\请输入边数:\ cin>>e; G.vernum=n; G.arcnum=e; // 建立顶点数组 for(k=0;k
if(j<0|| j>G.vernum-1) return ERROR; if(i==j)return ERROR; p=newArcNode; if(!p)return ERROR;
p->adjvex=j; p->nextarc=NULL; q=G.vertices[i].firstarc; if(!q)G.vertices[i].firstarc=p;
else{ while(q->nextarc) __________ // 指针定位于邻接表的尾结点 q->nextarc=p; } } return OK;}
. A. p=p->nextarc; . B. q->nextarc=NULL; . C. q->nextarc=p->nextarc . D. q=q->nextarc .
.7 编写算法实现从邻接表中取出某个顶点V的存储位置。intLocateVex(ALGraph& G,VertexType v) { int i=0; while(______&&i 第八章单元测试 . 1 1. 对线性表进行二分查找时,要求线性表必须( )。 . A. 以顺序方式存储 . B. 以链接方式存储 . C. 以顺序方式存储,且结点按关键字有序排序 . D. 以链接方式存储,且结点按关键字有序排序 . .2 2.下列描述中不符合二叉排序树特点的是 ( ) . A. 左子树中所有结点的关键字小于根结点的关键字 . B. 根结点的关键字大于左、右子树中所有结点的关键字 . C. 右字树中所有结点的关键字大于根节点的关键字C. . D. 关键字插入的顺序影响二叉排序树的形态 . .3 3.设哈希表长m=14,哈希函数H(key)=key。表中已有4个结点: addr (15)=4; addr (38)=5; addr (61)=6; addr (84)=7 如用二次探测再散列处理冲突,关键字为49的结点的地址是( ) . A. 8 . B. 3 . C. 5 . D. 9 . .4 4.试将折半查找的算法改写成递归算法。 Int bisearch (sqlist L,int low, int high , elemtype x ) { If (low>high) return( 0 ); else { if (L.data[mid]= =x) return (mid);