




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三次作业一、选择题1、在按行优先顺序存储的三元组表中,下述陈述错误的是 D 。A. 同一行的非零元素,是按列号递增次序存储的B. 同一列的非零元素,是按行号递增次序存储的C. 三元组表中三元组行号是非递减的D. 三元组表中三元组列号是非递减的2、在稀疏矩阵的三元组表示法中,每个三元组表示 D 。A. 矩阵中非零元素的值B. 矩阵中数据元素的行号和列号C. 矩阵中数据元素的行号、列号和值D. 矩阵中非零数据元素的行号、列号和值3、对特殊矩阵采用压缩存储的目的主要是为了 D 。A. 表达变得简单B. 对矩阵元素的存取变得简单C. 去掉矩阵中的多余元素D. 减少不必要的存储空间4、广义表是线性表的推广,它们之间的区别在于 A 。A. 能否使用子表B. 能否使用原子项C. 表的长度D. 是否能为空5、已知广义表(a, b, c, d)的表头是 A ,表尾是 D 。A. aB. ()C. (a, b, c, d)D. (b, c, d)6、下面说法不正确的是 A 。A. 广义表的表头总是一个广义表B. 广义表的表尾总是一个广义表C. 广义表难以用顺序存储结构表示D. 广义表可以是一个多层次的结构7、若广义表A满足Head(A)=Tail(A),则A为 C 。A. ( )B. ()C. ( ),( )D. ( ), ( ), ( )8、在一棵树中,如果结点A有3个兄弟,B是A的双亲,则B的度为 D A. 1B. 2C. 3D. 49、深度为h的完全二叉树至少有 D 个结点,至多有 B 个结点A. 2hB. 2h-1C. 2h+1D. 2h-110、具有n个结点的满二叉树有 C 个叶结点。A. n/2B. (n-1)/2C. (n+1)/2D. n/2+111、一棵具有25个叶结点的完全二叉树最多有 C 个结点。A. 48B. 49C. 50D. 5112、已知二叉树的先根遍历序列是ABCDEF,中根遍历序列是CBAEDF,则后根遍历序列是 A 。A. CBEFDAB. FEDCBAC. CBEDFAD. 不定13、具有10个叶结点的二叉树中有 B 个度为2的结点。A. 8B. 9C. 10D. 1114、一棵非空二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足 D 。A. 所有非叶结点均无左孩子B. 所有非叶结点均无右孩子C. 只有一个叶子结点D. A和B同时成立15、在线索二叉树中,t所指结点没有左子树的充要条件是 D 。A. t-left=NULLB. t-ltag=TRUEC. t-ltag=TRUE且t-left=NULLD. 以上都不对16、n个结点的线索二叉树上含有的线索数为 C 。A. 2nB. n-1C. n+1D. n二、填空题1、稀疏矩阵一般压缩存储的方式有三种,分别是 三元数组存储 、 行指针链表 和 十字链表 。2、二维数组M中每个元素的长度是3字节,行下标i从07,列下标j从09,从首地址&M00开始连续存放在存储器中。若按行优先的方式存放,元素M75的起始地址为M00+228 ;若按列优先方式存放,元素M75的起始地址为M00+144 。3、广义表(a, (a, b), d, e, (i, j), k)的长度是 5 ,深度是 3 。4、设广义表A( ), (a, (b), c),则Cal(Cdr(Cal(Cdr(Cal(A)= ( b) 5、一棵二叉树有67个结点,结点的度是0和2。问这棵二叉树中度为2的结点有 33 个。6、含A, B, C三个结点的不同形态的二叉树有 5 棵。7、含有4个度为2的结点和5个叶子结点的完全二叉树,有 1 个度为1的结点。8、具有100个结点的完全二叉树的叶子结点数为 50 。9、在用左右链表示的具有n个结点的二叉树中,共有 2n 个指针域,其中 n-1 个指针域用于指向其左右孩子,剩下的 n+1 个指针域是空的。三、试编写一个求三元组顺序表示的稀疏矩阵对角线元素之和的算法int arrayMaxlength3;int main() cout num; for ( int i = 0; i num; i+ ) cout 输入第 i+1 arrayi0 arrayi1 arrayi2; for ( int i = 0; i num-1; i+ ) for ( int j = i+1; j arrayj0 | (arrayi0 = arrayj0 & arrayi1 arrayj1) ) int tmp = arrayi0; arrayi0 = arrayj0; arrayj0 = tmp; tmp = arrayi1; arrayi1 = arrayj1; arrayj1 = tmp; tmp = arrayi2; arrayi2 = arrayj2; arrayj2 = tmp; cout 三元组内数据为: endl; cout 行号 t 列号 t 元素值 endl; for ( int i = 0; i num; i+ ) cout arrayi0 t arrayi1 t arrayi2 endl; int sum = 0; for ( int i = 0; i num; i+ ) if ( arrayi0 = arrayi1 ) sum += arrayi2; cout 对角线元素和为:; cout sum endl; system(pause); return 0; 四、当具有相同行值和列值的稀疏矩阵A和B均以三元组顺序表方式存储时,试写出矩阵相加的算法,其结果存放在以行逻辑链接顺序表方式存储的矩阵C中。int array1Maxlength3,int array2Maxlength3; int arrayMaxlengthMaxlength;int main() cout num1; int Maxn = 0; int Maxm = 0; for ( int i = 0; i num1; i+ ) cout 输入第 i+1 array1i0 array1i1 array1i2; if ( array1i0 Maxn ) Maxn = array1i0; if ( array1i1 Maxm ) Maxm = array1i1; cout num2; for ( int i = 0; i num2; i+ ) cout 输入第 i+1 array2i0 array2i1 array2i2; if ( array2i0 Maxn ) Maxn = array1i0; if ( array2i1 Maxm ) Maxm = array2i1; for ( int i = 0; i = Maxn; i+ ) for ( int j = 0; j = Maxm; j+ ) arrayij = 0; for ( int i = 0; i num1; i+ ) arrayarray1i0array1i1 += array1i2; for ( int i = 0; i num2; i+ ) arrayarray2i0array2i1 += array2i2; cout 合并后的矩阵行、列分别为: Maxn t Maxm endl; cout 合并后的矩阵元素为: endl; for ( int i = 0; i = Maxn; i+ ) for ( int j = 0; j = Maxm; j+ ) cout arrayij t; cout endl; system(pause); return 0;五、设有一个稀疏矩阵:1、写出三元组顺序表存储表示2、写出十字链表存储的顺序表示(1)A= (2)01 41 3-34 524 1-73 3 52 0 81 615 36M.cheadM.rhead六、画出广义表LS=( ), (e), (a, (b, c, d)的头尾链表存储结构(类似于教材P70图2-27.9)。要求:按照教材中的事例画出相应的图形,不需要编程。t 其中第一个节点如下:ttffeffatfbfcfd 七、试编写求广义表中原子元素个数的算法。要求:1、定义广义表的节点的型;2、定义广义表的基本操作;3、定义本题要求的函数int elements(listpointer L);函数返回值为广义表中原子的个数。例如,广义表(a, b, c, d)原子的个数为4,而广义表(a, (a, b), d, e, (i, j), k)中院子的个数为3。提示:先利用基本操作Cal(L)获得表头,判断表头是不是原子,再利用基本操作Cdr(L)获得除第一个元素外的其他元素所形成的表L1,利用递归的方法求L1中原子的个数。#includeusing namespace std;struct listnode listnode *link; boolean tag; union char data; listnode *dlink; element;typedef listnode *listpointer;boolean Equal(listpointer S,listpointer T) boolean x,y=FALSE; if(S=NULL)&(T=NULL) y=TRUE; else if(S!=NULL)&(T!=NULL) if(S-tag=T-tag) if(S-tag=FALSE) if(S-element.data=T-element.data) x=TRUE; else x=FALSE; else x=Equal(S-element.dlink,T-element.dlink); if(x=TRUE) y=Equal(S-link,T-link); return y;int elements(listpointer L) if(L=NULL) return 0; if(L-tag=0) return(elements(L-next)+1); else return(elements(L-next)+elements(L-val.sublist); system(pause); return 0;八、试分别画出具有4个结点的二叉树的所有不同形态。9、 已知一棵二叉树的中根序列和后根序列分别是BDCEAHFG和DECBHGFA,请画出此二叉树。 十、已知 非空二叉树T,写一个算法,求度为2的结点的个数。要求:1、定义二叉树的抽象数据类型和型BTREE,并定义基本操作。2、编写函数count2(BTREE T),返回度为2的节点的个数。 3、在主函数中,构建一个二叉树,并验证所编写的算法。#includeusing namespace std;struct nodenode *lchild;char data;node *rchild;typedef node *BTREE;void createbtree(BTREE &root) char ch; cinch;if (ch=*) root=NULL;return; root=new node; root-data=ch;root-lchild=NULL; root-rchild=NULL;createbtree(root-lchild); createbtree(root-rchild); int count2(BTREE &r) int count =0;if(r=NULL)return 0;if(r-lchild)&(r-rchild)count =1;return count+count2(r-lchild)+count2(r-rchild);void main()BTREE root;createbtree(root);coutcount2(root)endl;system(pause);return 0;十一、用递归方法写一个算法,求二叉树的叶子结点数int leafnum(BTREE T)。要求:1、 定义二叉树的抽象数据类型和型BTREE,并定义基本操作。2、 编写函数leafnum(BTREE T),返回树T的叶子节点的个数。在主函数中,构建一个二叉树,并验证所编写的算法。#includeusing namespace std;struct node struct node * lchild; struct node * rchild; datatype data;typedef struct node * BTREE;datatype Data(BTREE BT) return BT-data;BTREE CreateBT(datatype v,BTREE ltree,BTREE rtree) BTREE root; root=new node; root-data=v; root-lchild=ltree; root-rchild=rtree; return root;BTREE CreateBtree(BTREE &T,char * &str) char ch; ch=*str+; if(ch=#) t=NULL; else if(!(T=new node) exit(1); T-data=ch; CreateBtree(T-lchild,str); CreateBtree(t-rchild,str); return T;BTREE Lchild(BTREE BT) return BT-lchild;BTREE Rchild(BTREE BT) return BT-rchild;int leafnum(BTREE T) if(T=NULL) return 0; else return 1+leafnum(T-lchild)+leafnum(T-rchild);void mian() BTREE T,T1; T=CreateBT(f,NULL,NULL); T=CreateBT(d,NULL,NULL); T1=CreateBT(e,NULL,NULL); T=CreateBT(b,T,T1); T1=CreateBT(c,NULL,NULL); T=CreateBT(a,T,T1); PreOrder(T);coutendl; InOrder(T);coutendl; PostOrder(T);coutendl; NInOrder(T);coutendl;十二、画出下图所表示的二叉树的中序线索二叉树和先序线索二叉树。 十三、已知二叉树的先根序列是AEFBGCDHIKJ,中根序列是EFAGBCHKIJD,画出此二叉树,并画出后序线索二叉树。ABCDEFGJHKI后序线索FEGKJIHDCRA十四、在中序线索二叉树中插入一个结点Q作为树中某个结点P的左孩子,试给出相应的算法。要求:1、 定义中序线索二叉树的型THTREE以及基本操作。2、 定义函数void LInsert(THTREE P, THTREE Q); 实现题目要求的操作。在主函数中,利用操作RInsert和LInsert构造一个线索二叉树,并中序输出二叉树的结点的元素,验证结果。#includeusing namespace std;struct node datatype data; node *lchild,*rchild; BOOLEAN ltag,rtag;type node * THTREE;THTREE InNext(THTREE p) THTREE Q=p-rchild; if(p-rtag=TRUE) while(Q-ltag=TRUE) Q=Q-lchild; return Q;THTREE InPre(THTREE p) THTREE Q; Q=p-lchild; if(p-ltag=TRUE) while(Q-rtag=TRUE) Q=Q-rchild; retu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象棋延时服务课件
- 2025版高新技术产业聘用员工合同协议示范文本
- 2025版企业绿色转型项目咨询与服务合同
- 2025年度礼品定制采购合同-附加礼品定制及品牌合作计划
- 2025大蒜产业链金融支持服务合同
- 2025年度农业合作社三方租地合作合同范本
- 2025版网络安全防护软件源码授权与保密协议标准范本
- 2025年度电力照明设施安全检测合同
- 2025年股权代持转让及管理服务三方合同
- 诸子论与课件
- 2025年海南省通信网络技术保障中心招聘考试笔试试题(含答案)
- 2025年国家卫生健康委医药卫生科技发展研究中心招聘考试笔试试题(含答案)
- 2025至2030中国PE微粉蜡市场需求量预测及前景动态研究报告
- 2025年辅警招聘公安基础知识题库附含参考答案
- 2025年理赔专业技术职务任职资格考试(理赔员·保险基础知识)历年参考题库含答案详解(5套)
- 2025年北京标准租房合同范本下载
- 中华人民共和国治安管理处罚法2025修订版测试题及答案
- 第一单元复习与提高(单元测试)-五年级上册数学沪教版
- 2025年湖北高考历史试题(含答案解析)
- 新学期教学工作会议上校长讲话:把功夫下在课堂里把心思放在学生上把质量落到细节中
- 2025至2030中国环境监测行业市场发展现状及投资前景与策略报告
评论
0/150
提交评论