数据结构作业系统_第五章答案

合集下载

数据结构第五章 查找 答案

数据结构第五章 查找 答案

数据结构与算法上机作业第五章查找一、选择题1、若构造一棵具有n个结点的二叉排序树,在最坏情况下,其高度不超过 B 。

A. n/2B. nC. (n+1)/2D. n+12、分别以下列序列构造二叉排序数(二叉查找树),与用其他3个序列所构造的结果不同的是 C :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)3、不可能生成下图所示的二叉排序树的关键字的序列是 A 。

A. 4 5 3 1 2B. 4 2 5 3 1C. 4 5 2 1 3D. 4 2 3 1 54、在二叉平衡树中插入一个结点造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作 C 型调整使其平衡。

A. LLB. LRC. RLD. RR5、一棵高度为k的二叉平衡树,其每个非叶结点的平衡因子均为0,则该树共有 C 个结点。

A. 2k-1-1B. 2k-1+1C. 2k-1D. 2k+16、具有5层结点的平衡二叉树至少有 A 个结点。

A. 12B. 11C. 10D. 97、下面关于B-和B+树的叙述中,不正确的是 C 。

A. B-树和B+树都是平衡的多叉树B. B-树和B+树都可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索8、下列关于m阶B-树的说法错误的是 D 。

A. 根结点至多有m棵子树B. 所有叶子结点都在同一层次C. 非叶结点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D. 根结点中的数据是有序的9、下面关于哈希查找的说法正确的是 C 。

A. 哈希函数构造得越复杂越好,因为这样随机性好,冲突小B. 除留余数法是所有哈希函数中最好的C. 不存在特别好与坏的哈希函数,要视情况而定D. 若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单地将该元素删去即可10、与其他查找方法相比,散列查找法的特点是 C 。

数据结构第四五六七章作业答案

数据结构第四五六七章作业答案

数据结构第四五六七章作业答案数据结构第四、五、六、七章作业答案第四章和第五章一、填空题1.不包含任何字符(长度为0)的字符串称为空字符串;由一个或多个空格(仅空格字符)组成的字符串称为空白字符串。

2.设s=“a;/document/mary.doc”,则strlen(s)=20,“/”的位置为3。

3.子串的定位操作称为串模式匹配;匹配的主字符串称为目标字符串,子字符串称为模式。

4、串的存储方式有顺序存储、堆分配存储和块链存储5.有一个二维数组a[0:8,1:5],每个数组元素用四个相邻字节存储,内存用字节寻址。

假设存储阵列元素a[0,1]的地址为100,如果以主行顺序存储,则a[3,5]的地址为176,[5,3]的地址为208。

如果按列存储,[7,1]的地址为128,[2,4]的地址为216。

6、设数组a[1…60,1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950。

7、三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。

8、二维数组a[10][20]采用列序为主方式存储,每个元素占10个存储单元,且a[0][0]的存储地址是2000,则a[6][12]的地址是32609.已知二维数组a[20][10]按行顺序存储,每个元素占2个存储单元,a[10][5]的存储地址为1000,则a[18][9]的存储地址为116810。

已知二维数组a[10][20]按行顺序存储,每个元素占2个存储单元,a[0][0]的存储地址为1024,则a[6][18]的地址为130011,两个字符串相等。

充要条件是长度相等,相应位置的字符相同。

12、二维数组a[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且a[0][0]的存储地址是200,则a[6][12]的地址是200+(12*10+6)=326。

数据结构》作业题答案

数据结构》作业题答案

参考答案第一章、绪论一、选择题1 B;2 A; 3 B;4 C ;5 C; 6 B;7 C;8 C;9 D;10 B。

二、填空题1、存储;2、无,1,无,1;3、前驱,1,后继,任意多个;4、一对一,一对多,多对多;5、时间复杂度,空间复杂度;6、集合,线性结构,树形结构,图形结构;7、顺序结构,链式结构,索引结构,散列结构;8、顺序。

三、问答题与算法题1、3 ;2、T1 ( n ) = 5n 2 -O ( n ) ; T2 ( n ) = 3 n 2 + O ( n ) ; T3 ( n ) = 8 n 2 + O(log n) ;T4 ( n ) = 1.5 n 2 + O ( n ) 。

T4 ( n ) 较优,T3 ( n )较劣。

3、见课本。

第二章线性表一、选择题1C;2A;3D;4B;5D;6B;7C;8B;9A;10C;11D;12D;13C;14C.二、填空题1、O ( 1 ), O ( n );2、单链表,双链表;3、地址,指针;4、4,2;5、便于访问尾结点和头结点;6、前驱;7、L->next== L且L->prior== L;8、顺序。

三、问答题与算法题1、头指针:结点或头结点的指针变量。

其作用是存放第一个结点或头结点的地址,从头指针出发可以找到链表中所有结点的信息。

头结点:是附加在链表的第一个结点之前的一个特殊结点,其数据域一般不存放信息。

其作用是为了简化运算,将空表与非空表统一起来,将第一个结点与其他结点的处理统一起来。

首结点:是链表的第一个结点。

2、(1)基于空间的考虑。

当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。

(2)基于时间的考虑。

若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。

数据结构第五章参考答案

数据结构第五章参考答案

习题51.填空题(1)已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为(___________)。

答案:129(2)3个结点可构成(___________)棵不同形态的二叉树。

答案:5(3)设树的度为5,其中度为1~5的结点数分别为6、5、4、3、2个,则该树共有(___________)个叶子。

答案:31(4)在结点个数为n(n>1)的各棵普通树中,高度最小的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

高度最大的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

答案:2 n-1 1 n 1 n-1(5)深度为k的二叉树,至多有(___________)个结点。

答案:2k-1(6)(7)有n个结点并且其高度为n的二叉树的数目是(___________)。

答案:2n-1(8)设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为(___________),最小结点数为(___________)。

答案:2k+1-1 k+1(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT (X)的编号为()。

答案:24(10)已知一棵完全二叉树中共有768个结点,则该树中共有(___________)个叶子结点。

答案:384(11)(12)已知一棵完全二叉树的第8层有8个结点,则其叶子结点数是(___________)。

答案:68(13)深度为8(根的层次号为1)的满二叉树有(___________)个叶子结点。

答案:128(14)一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是(___________)。

答案:ABCDEF(15)某二叉树结点的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,则该二叉树结点的前序遍历序列为(___________),该二叉树对应的树林包括(___________)棵树。

吉林省专升本数据结构习题及答案——第五章

吉林省专升本数据结构习题及答案——第五章

吉林省专升本考试数据结构分章习题及参考答案———选择题(第五章)1、一棵完全二叉树上有1001个结点,其中叶子结点的个数是( )。

A、250B、500C、254D、5012、将一棵树t转换为孩子—兄弟链表表示的二叉树h,则t的后根序遍历是h 的A、前序遍历B、中序遍历C、后序遍历D、层序遍历3、采用邻接表存储的图,其深度优先遍历类似于二叉树的()。

A、中序遍历B、先序遍历C、后序遍历D、按层次遍历4、二叉树的第5层上最多含有结点数为()A、31B、16C、15D、325、某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E则前序序列是:A、E,G,F,A,C,D,BB、E,A,C,B,D,G,FC、E,A,G,C,F,B,DD、上面的都不对6、若森林F有15条边、25个结点,则F包含树的个数是( )。

A、8B、9C、10D、117、有权值分别为2,3,5,8,7,4的叶子结点生成一棵哈夫曼树,其带权路径长度为()A、36B、72C、96D、1208、任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序()A、肯定不发生改变B、肯定发生改变C、不能确定D、有时发生变化9、为5个使用频率不等的字符设计哈夫曼编码,不可能的方案是( ).A、 111,110,10,01,00B、000,001,010,011,1C、100,11,10,1,0D、001,000,01,11,1010、给定二叉树1(2(4,5(6,7)),3)。

设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。

若遍历后的结点序列为3,1,7,5,6,2,4则其遍历方式是( )A、LRNB、NRLC、RLND、RNL11、若以{4,5,6,7,8}作为权值构造哈夫曼树,则该树的带权路径长度为()。

A、67B、68C、69D、7012、深度为k的完全二又树至少有( )个结点。

A、2k-2+1B、2k-1C、2k-1D、2k-1-113、一个具有1025个结点的二叉树的高h为()A、11B、10C、11至1025之间D、10至1024之间14、设F是一个森林,B是由F变换得的二叉树。

数据结构第五章考试题库(含答案)

数据结构第五章考试题库(含答案)

第 5 章数组和广义表一、选择题为第一元素,其存储地址为1,1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11的地址为()。

【燕山大学 2001 一、2 (2分)】每个元素占一个地址空间,则a85A. 13B. 33C. 18D. 402. 有一个二维数组A[1:6,0:7] 每个数组元素用相邻的6个字节存储,存储器按字节编址,那么这个数组的体积是(①)个字节。

假设存储数组元素A[1,0]的第一个字节的地址是0,则存储数组A的最后一个元素的第一个字节的地址是(②)。

若按行存储,则A[2,4]的第一个字节的地址是(③)。

若按列存储,则A[5,7]的第一个字节的地址是(④)。

就一般情况而言,当(⑤)时,按行存储的A[I,J]地址与按列存储的A[J,I]地址相等。

供选择的答案:【上海海运学院 1998 二、2 (5分)】①-④: A.12 B. 66 C. 72 D. 96 E. 114 F. 120G. 156 H. 234 I. 276 J. 282 K. 283 L. 288⑤: A.行与列的上界相同 B. 行与列的下界相同C. 行与列的上、下界都相同D. 行的元素个数与列的元素个数相同3. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。

A. BA+141B. BA+180C. BA+222D. BA+225【南京理工大学 1997 一、8 (2分)】4. 假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

【福州大学 1998 一、10 (2分)】A. 808B. 818C. 1010D. 10205. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。

数据结构第五章习题答案

数据结构第五章习题答案

1.二维数组A行下标i的范围从1到12,列下标j的范围从3到10,采用行序为主序存储,每个数据存储元素占用4个存储单元,该数组的首地址(既A[1][3]的地址)为1200,则A[6][5]的地址为(D)A.1400B.1404C.1372D.13682.有一个M*N的矩阵A,若采用行序为主序进行顺序存储,每个元素占用8个字节,则A ij (1≤i≤M,1≤i≤N)元素的相对字节地址(相对首元素地址而言)为(B)A.((i-1)*N+j)*8B.((i-1)*N+j-1)*8C.(i*N+j-1)*8D.((i-1)*N+j+1)*83.稀疏矩阵一般的压缩存储方法有两种,即(D)A.二维数组和三维数组B.三元组和散列C.散列和十字链表D.三元组和十字链表4.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点(B)A.正确B.错误5.广义表((a,b),c,d)的表头是(C),表尾是(D)。

A.aB.bC.(a,b)D.(c,d)6.一个广义表的表头总是广义表,这个断言是(B)A.正确B.错误7.二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][12]的地址是(326)8.有一个10阶对称矩阵A,采用压缩存储方式(以行序为主存储,且A[0][0]=1),则A[4][3]的地址是(14)9.一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为(5),深度为(3)10.广义表((a),((b),c),(((d))))的表头是((a)),表尾是((((b),c),(((d)))))11.已知广义表A=((a,b,c),(d,e,f)),则广义表运算head(tail(tail(A)))=(e)12.已知广义表GL=(a,(b,c,d),e),运用head和tail函数取出GL中的原子b的运算是(head(head(tail(GL))))13.特殊矩阵和压缩矩阵哪一种压缩存储后会失去随机存取的功能?为什么?答:稀疏矩阵在进行压缩存储后会失去随机存取的功能,因为非零元素的位置没有办法确定。

数据结构与算法第5章课后答案

数据结构与算法第5章课后答案

page: 1The Home of jetmambo - 第 5 章树和二叉树第 5 章树和二叉树(1970-01-01) -第 5 章树和二叉树课后习题讲解1. 填空题⑴树是n(n≥0)结点的有限集合,在一棵非空树中,有()个根结点,其余的结点分成m (m>0)个()的集合,每个集合都是根结点的子树。

【解答】有且仅有一个,互不相交⑵树中某结点的子树的个数称为该结点的(),子树的根结点称为该结点的(),该结点称为其子树根结点的()。

【解答】度,孩子,双亲⑶一棵二叉树的第i(i≥1)层最多有()个结点;一棵有n(n>0)个结点的满二叉树共有()个叶子结点和()个非终端结点。

【解答】2i-1,(n+1)/2,(n-1)/2【分析】设满二叉树中叶子结点的个数为n0,度为2的结点个数为n2,由于满二叉树中不存在度为1的结点,所以n=n0+n2;由二叉树的性质n0=n2+1,得n0=(n+1)/2,n2=(n-1)/2。

⑷设高度为h的二叉树上只有度为0和度为2的结点,该二叉树的结点数可能达到的最大值是(),最小值是()。

【解答】2h -1,2h-1【分析】最小结点个数的情况是第1层有1个结点,其他层上都只有2个结点。

⑸深度为k的二叉树中,所含叶子的个数最多为()。

【解答】2k-1【分析】在满二叉树中叶子结点的个数达到最多。

⑹具有100个结点的完全二叉树的叶子结点数为()。

【解答】50【分析】100个结点的完全二叉树中最后一个结点的编号为100,其双亲即最后一个分支结点的编号为50,也就是说,从编号51开始均为叶子。

⑺已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点。

则该树中有()个叶子结点。

【解答】12【分析】根据二叉树性质3的证明过程,有n0=n2+2n3+1(n0、n2、n3分别为叶子结点、度为2的结点和度为3的结点的个数)。

⑻某二叉树的前序遍历序列是ABCDEFG,中序遍历序列是CBDAFGE,则其后序遍历序列是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
else
{
OutAtom(A->un.ptr.hp,layer+1,Out2);
OutAtom(A->un.ptr.tp,layer,Out2);
}
}
5.18⑤试设计一个算法,将数组A中的元素
A[0..n-1]循环右移k位,并要求只用一个元素
大小的附加存储,元素移动或交换次数为O(n)。
要求实现以下函数:
n++; p++;
}
}
if(k>A.tu)
while(n<=B.tu)
{
C.data[p].e=B.data[n].e;
C.data[p].i=B.data[n].i;
C.data[p].j=B.data[n].j;
n++;p++;
printf("%d B ",B.data[n].e);
}
else
while(k<=A.tu)
/*求二元组矩阵的元素A[i][j]的值e */
稀疏矩阵的二元组顺序表+行起始向量的类型T2SMatrix的定义:
typedef struct{
int j;
ElemType e;
}TwoTuples;
typedef struct{
TwoTuples data[MAXSIZE];
int cpot[MAXROW]; //这个向量存储每一行在二元组中的起始位置
int mu,nu,tu;
} T2SMatrix; //二元组矩阵类型
Status GetElem(T2SMatrix M, int i, int j, ElemType &e)
/*求二元组矩阵的元素A[i][j]的值e */
{
int k;
if(i>M.mu||j>M.nu||i<1||j<1)return ERROR;
{
int j=0;
OLink p;
for(j=0;j<=M.mu;j++)
{
if(M.rhead[j])
for(p=M.rhead[j];p;p=p->right)
Out3(p->i,p->j,p->e);
}
}
5.30③试按表头、表尾的分析方法重写求广义表
的深度的递归算法。
要求实现以下函数:
int GListDepth(GList ls);
} ptr;
}un;
} *GList;
void OutAtom(GList A, int layer, void(*Out2)(char, int))
/*递归地用函数Out2输出广义表的原子及其所在层次,layer表示当前层次*/
{
if(A==NULL)return;
if(A->tag==ATOM)Out2(A->un.atom,layer);
/*用函数Out3,依次以三元组格式输出十字链表表示的矩阵*/
稀疏矩阵的十字链表存储表示:
typedef struct OLNode {
int i,j; //该非零元的行和列下标
ElemType e; //非零元素值
OLNode *right,*down; //该非零元所在行表和列表的后继链域
}OLNode, *OLink;
{
C.data[p].e=A.data[k].e;
C.data[p].i=A.data[k].i;
C.data[p].j=A.data[k].j;
k++;p++;
printf("%d A ",C.data[p].e);
}
C.mu=A.mu;
C.nu=A.nu;
C.tu=p-1;
return TRUE;
广义表类型GList的定义:
typedef enum {ATOM,LIST} ElemTag;
typedef struct GLNode{
ElemTag tag;
union {
char atom;
struct {
GLNode *hp, *tp;
} ptr;
}un;
} *GList;
Status Equal(GList A, GList B)
} ptr;
}un;
} *GList;
int GListDepth(GList ls)
/* Return the depth of list */
{
int max=0,dep;
GList p;
if(ls==NULL)return 1;
if(ls->tag==ATOM)return 0;
for(p=ls;p;p=p->un.ptr.tp)
void Rotate(Array1D &a, int n, int k);
一维数组类型Array1D的定义:
typedef ElemType Array1D[MAXLEN];
void Rotate(Array1D &a, int n, int k)
/* a[n] contains the elements, */
while(k<=A.tu&&n<=B.tu)
{
if(A.data[k].i==B.data[n].i&&A.data[k].j==B.data[n].j)
{
ce=A.data[k].e+B.data[n].e;
if(ce)
{
C.data[p].i=A.data[k].i;
C.data[p].j=A.data[k].j;
if(Equal(A->un.ptr.hp,B->un.ptr.hp)&&Equal(A->un.ptr.tp,B->un.ptr.tp))
return TRUE;
return FALSE;
}
5.33④试编写递归算法,输出广义表中所有原子项
及其所在层次。
要求实现以下函数:
void OutAtom(GList A, int layer, void(*Out2)(char, int));
for(k=M.cpot[i];k<M.cpot[i+1];k++)
{
if(M.data[k].j==j)
{
e=M.data[k].e;
return OK;
}
}
e=0;
return OK;
}
5.26③试编写一个以三元组形式输出用十字链表
表示的稀疏矩阵中非零元素及其下标的算法。
要求实现以下函数:
void OutCSM(CrossList M, void(*Out3)(int, int, int));
数据结构作业系统_第五章答案
5.21④假设稀疏矩阵A和B均以三元组表作为存储结构。
试写出矩阵相加的算法,另设三元组表C存放结果矩阵。
要求实现以下函数:
Status AddTSM(TSMatrix A,TSMatrix B,TSMatrix &C);
/*三元组表示的稀疏矩阵加法: C=A+B */
稀疏矩阵的三元组顺序表类型TSMatrix的定义:
typedef struct {
OLink *rhead,*chead; //行和列链表头指针向量基址
int mu,nu,tu; //稀疏矩阵的行数、列数和非零元个数
}CrossList;
void OutCSM(CrossList M, void(*Out3)(int, int, int))
/*用函数Out3,依次以三元组格式输出十字链表表示的矩阵*/
int mu,nu,tu; //矩阵的行数、列数和非零元个数
}TSMatrix;
Status AddTSM(TSMatrix A,TSMatrix B,TSMatrix &C)
/*三元组表示的稀疏矩阵加法: C=A+B */
{
int k=1,n=1,p=1;
ElemType ce;
if(A.mu!=B.mu||A.nu!=B.nu)return ERROR;
#define MAXSIZE 20 //非零元个数的最大值
typedef struct {
int i,j; //行下标,列下标
ElemType e; //非零元素值
}Triple;
typedef struct {
Triple data[MAXSIZE+1]; //非零元三元组表,data[0]未用
/* Return the depth of list */
广义表类型GList的定义:
typedef enum {ATOM,LIST} ElemTag;
typedef struct GLNode{
ElemTag tag;
union {
char atom;
struct {
GLNode *hp, *tp;
/* rotate them right circlely by k sits */
{
int i,j,l,p,temp;
for(i=1;i<=k;i++)
if(k%i==0&&n%i==0)p=i;
for(i=0;i<p;i++)
{
j=i;
l=(j+k)%n;
while(l!=i)
{
if(j==i){temp=a[l];a[l]=a[j];a[j]=temp;}
相关文档
最新文档