付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编写递归算法,根据树的双亲表示法及其根节点创建树的孩子—兄弟链表 结构。要求写算法以前写出这两种 结构的类型说明。/*
树的双亲表 表示
*/#define
MAX_TREE_SIZE
100typedef
struct
{
//结点结构emType
data;int
parent; /*
双亲位置域*/}
PTNode;typedef
struct{
//树结构
PTNode
nodes[MAX_TREE_SIZE];int
r,n;/*
根的位置和结点数*/}
PTree;双亲表示采用数组1、编写递归算法,根据树的双亲表示法及其根节点创建树的孩子—兄弟链表 结构。要求写算法以前写出这两种 结构的类型说明。孩子-兄弟表示采用链表表示//c6-5.h
树的二叉链表(孩子-兄弟)typedef
struct
CSNode{emType
data;CSNode
*
child,*nextsibling;}CSNode,*CSTree;1、编写递归算法,根据树的双亲表示法及其根节点创建树的孩子—兄弟链表 结构。要求写算法以前写出这两种 结构的类型说明。分析:结构。1、编写递归算法,根据树的双亲表示法及其根节点创建树的孩子—兄弟链表要求写算法以前写出这两种 结构的类型说明。结构。1、编写递归算法,根据树的双亲表示法及其根节点创建树的孩子—兄弟链表要求写算法以前写出这两种 结构的类型说明。2、以二叉链表为 结构的二叉树,其数据域为整型。试设计算法,计算每层中结点数据域大于50的结点个数,并输出这些结点数据域的值和序号。2、以二叉链表为 结构的二叉树,其数据域为整型。试设计算法,计算每层中结点数据域大于50的结点个数,并输出这些结点数据域的值和序号。2、以二叉链表为 结构的二叉树,其数据域为整型。试设计算法,计算每层中结点数据域大于50的结点个数,并输出这些结点数据域的值和序号。//根节点入队3、假设以双亲表示法做树的 结构,写出双亲表示的类型说明,并编写求给定的树的深度算法。(注:已知树中的结点数)【分析】由于以双亲表示法作树的 结构,找结点的双亲容易。因此 可求出每一结点的层次,取其最大层次就是树的深度。对每一结点,找其双亲,双亲的双亲,直至(根)结点双亲为0为止。int
Depth(PTree
t){int
maxdepth=0;
/*树的深度*/int
f,temp;for(i=1;i<=t.n;i++){temp=0;
f=i;while(f>0)
{temp++;
f=t.nodes[f].parent;
} /*
深度加1,并取新的双亲*/if(temp>maxdepth) maxdepth=temp;
}
/*最大深度更新*/}return(maxdepth);/*返回树的深度*/4、5、分析:2、令G=<V,E>为一个有向图,编写一个给图G中每一个顶点赋以一个整型序号的算法,并满足以下条件:若从顶点i至顶点j有一条弧,则应使i<j。分析:1、由题知,该有向图无环,否则“若从顶点i至顶点j有一条弧,则应使i<j”无法成立。2、利用拓扑排序,在排序过程中将每一顶点的数据域赋予整型序号。Status
Topological
Sort(ALGraph
G){//有向图G采用邻接表 结构。FindInDegree(G,indegree);//对各顶点求入度indegree[0..vernum-1]InitStack(S);
for(i=0;i<G.vexnum;
++i)if(!indegree[i])Push(S,i)//建零入度顶点栈,s入度为0者进栈count=1;//整型序号初始化
while(!StackEmpty(S)){Pop(S,i);G.vertices[i].d ount;++count;//输出i号顶点并将其数据域赋值整型序号for(p=G.vertices[i]. arc;p;
p=p—>nextarc)
{k=p—>adivex;//对i号顶点的每个邻接点的入度减1if(!(--indegree[k]))Push(S,k);//若入度减为0,则入}//for}//while}//TopologicalSort3、试编写把一个无向图的邻接矩阵 结构转换为邻节表 结构的算法。分析:先设置一个空的邻接表,然后在邻接矩阵上查找值不为零的元素,找到后在邻接表的对应单链表中 相应的边表结点。void
MatToList(AdMatrix
&A,
AdjList
&B){B.vexnum=A.vexnum;structum;
//邻接表初始化
ode
p;for(i=0;i<A.vexnum;i++)B.AdjList[i].
arc=NULL;
//邻接表头结点初始化for(i=0;i<A.vexnum;i++)
//在邻接矩阵上查找值不为零的元素,相应的边表结点找到后在邻接表的对应单链表中for(j=0;j<I;j++)if(A.arcs[i][j]!=0){p->adjvex=j;p->nextarc=B.adjlist[i].
arc;B.adjlist[i].
arc=p;}}4、试编写图的深度优先遍历的非递归算法。分析:深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为:4、试编写图的深度优先遍历的非递归算法。假设图采用邻接矩阵作为 结构,具体算法如下:void
DFSTraverse(ALGraph*
G,int
k){Stack
s;
InitStack(s);//栈初始化if(!visited[G->vertex[k]]&&
G!=NULL) push(k);//若图不为空,则将节点标号压入while(!StackEmpty(s))
//栈不为空说明还有节点未被{i
=getTop(s); //取栈顶节点标号,但是不要将其出栈for(j=0;j<vertexNum;j++)
//遍历该元素的相邻节点是否有未被标记。若有,则 ,并标记为已 ,然后压入栈。{if(arc[k][j]==1
&&
visited[j]==0){visited[j]=1;s[++top]=j;}if(j==vertexNum)top--;//若无,则当前节点退栈}}}5、假设以邻接矩阵为图的
结构,编写算法判别在给定的有向图中是否存在一个有向回路。若存在,则以顶点序列的方式输出该回路(找到一条即可,图中不存在顶点到自己的弧)5、假设以邻接矩阵为图的
结构,编写算法判别在给定的有向图中是否存在一个有向回路。若存在,则以顶点序列的方式输出该回路(找到一条即可,图中不存在顶点到自己的弧)main
{
find_cycle();}回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宣城2025年安徽宣城市教学研究室选聘教研员笔试历年参考题库附带答案详解
- 天津2025年天津市和平区事业单位面向会宁籍未就业高校毕业生招聘笔试历年参考题库附带答案详解
- 合肥2025年安徽合肥长丰县水湖镇招聘村(社区)后备干部12人笔试历年参考题库附带答案详解
- 南昌2025年江西南昌市青山湖区农业农村局面向全省选调笔试历年参考题库附带答案详解
- 乐山2025年四川乐山市市中区面向川渝两地选调事业单位工作人员15人笔试历年参考题库附带答案详解
- 2026-2032年中国消防喷淋软管系统行业市场全景评估及发展前景研判报告
- 企业盘点制度
- 企业新八级工制度
- 代位注销制度
- 耐药治疗的质量控制指标
- 完整工资表模板(带公式)
- 家长要求学校换老师的申请书
- 奇瑞汽车QC小组成果汇报材料
- 阑尾肿瘤-课件
- CTT2000LM用户手册(维护分册)
- 川2020J146-TJ 建筑用轻质隔墙条板构造图集
- 正式员工派遣单
- 新员工入职申请表模板
- 中外新闻事业史课程教学大纲
- LY/T 1357-2008歧化松香
- 化工厂常见隐患危害因素及防范措施
评论
0/150
提交评论