弟弟的作业,让我做才发现做不好!一起来看看!(有代码)!最好能把你做的写出来!

oktay 2005-07-14 03:57:36
问题:
图的基本操作与实现
(1)自选存储结构,输入含n个顶点(用字符表示顶点)和e
条边的图G;
(2)求每个顶点的度,输出结果;
(3)判断图G是否是连通图,输出信息“YES”/“NO”;
(4)如果选用的存储结构是邻接矩阵,则用邻接矩阵的信息生
成图G的邻接表,即复制图G,然再执行操作(2);反之亦然


我的代码:
#include <iostream.h>
#include <stdlib.h>

typedef char VerT;
typedef char DataType;
const int MaxVertices = 100;
const int MaxWeight = 10000;
const int MaxQueueSize = 100;

#include "AdjMWGraph.h"
#include "CreatAdjMWGraph.h"

void Printchar(char item)
{
cout << item<<" ";
}
//主函数测试flag为0表示无向图,为1表示有向图
void main(void)
{
AdjMWGraph g;
char a[] = {'A','B','C','D','E'}; //测试图1
RowColWeight rcw[] = {{0,1,10},{0,4,20},{1,3,30},
{2,1,40},{2,3,50}}; //测试图1

//char a[] = {'A','B','C','D','E','F','G','H','I'}; //测试图2
//RowColWeight rcw[] = {{0,1,1},{0,2,1},{0,7,1},{0,4,1},
//{0,5,1},{2,3,1},{5,6,1}}; //测试图2

// char a[] = {'A'}; //测试图3
//RowColWeight rcw[] = {{0,0,0}}; //测试图3
int n = 0, e = 0,flag;
cout<<"请输入FLAG的值(0无向,1有向)"<<endl;
cout<<"flag = ";
cin>>flag;
cout<<"输入顶点的个数和边的条数:"<<endl;
cout<<"顶点的个数: ";
cin>>n;
cout<<"边的条数: ";
cin>>e;
cout<<endl;
CreatGraph(g, a, n, rcw, e,flag);
cout << "顶点个数为:" << g.NumOfVertices() << endl;
cout << "边的条数为:" << g.NumOfEdges() << endl;
cout<<endl;
g.countd(flag); //求各个顶点的度
cout << "深度优先搜索序列为:";
g.DepthFirstSearch(Printchar);
cout<<endl;
}

  
/*第三部分判断是否为连通图。图以邻接矩阵为存储结构,判断给定结点vi和任意结点vj之间是否有路径.
根据连通图的定义若有图为连通图.*/
    
int pathDFSM(MGraph *G,int i,int j)
{

int k;
    
visited[i]=TRUE;
    
for(k=0;k<G->n;k++)
//依次搜索vi的邻接点
     
if(G->edges[i][k]==1&&!visited[k])
      
if (k==j) return 1;
//有路径相通

cout<<"Yes"<<endl;
      
else return(pathDFSM(G,k,j);
     
return 0;
//无路径相通

cout<<"No"<<endl;
   
}//DFSM

/*第四部分:在邻接矩阵信息基础上生成邻接表。逐个扫描邻接矩阵的各个元素,如第i行第j列的元素
为1,则相应的邻接表的第i个单链表上增加一个j结点。*/
void transform(int adjarray[n][n],adjlist adj)
{
int i,j;
edgenode *p;
for(i=0;i<n;i++)
{
adj[i].data=i;

adj[i].link=NULL;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(adjarray[i][j]==1)
{
p=(edgenode *)malloc(sizeof(edgenode));
p→adjvex=j;
p→next=adj[i].link;
adj[i].link=p;
}
}
}

...全文
138 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
K 2005-07-15
  • 打赏
  • 举报
回复
你这是害你弟弟
oktay 2005-07-14
  • 打赏
  • 举报
回复
晚上10点结帐!有答案的发我邮箱oktay@163.com!
oktay 2005-07-14
  • 打赏
  • 举报
回复
有什么办法啊!谁叫他是我亲弟弟呢!再说还有把柄在他手上!你要我怎么办啊?
oktay 2005-07-14
  • 打赏
  • 举报
回复
有什么办法啊!谁叫他是我亲弟弟呢!再说还有把柄在他手上!你要我怎么办啊?
xiaonian_3654 2005-07-14
  • 打赏
  • 举报
回复
你这是害你弟弟
oktay 2005-07-14
  • 打赏
  • 举报
回复
100分求完整的解答!
为了弟弟,我豁出去了!
好心痛啊!
oktay 2005-07-14
  • 打赏
  • 举报
回复
兄弟,你能不能写下啊!我是学硬件开发的,编程的事情不是很清楚!写个程序出来看看嘛!
defyer007 2005-07-14
  • 打赏
  • 举报
回复
用DFS/WFS遍历图,如果不能通过任意一个节点访问到所有的节点,则不是连通图
defyer007 2005-07-14
  • 打赏
  • 举报
回复
使用邻接表和逆邻接表为存储结构,非常容易求度和连通性
基于LOS算法+反步控制的水下航行器AUVUUV三维路径跟踪控制研究(Matlab代码实现)内容概要:本文研究基于LOS(Line-of-Sight)算法与反步控制相结合的水下航行器(AUV/UUV)三维路径跟踪控制方法,并提供了完整的Matlab代码实现。通过构建水下航行器的动力学模型,结合LOS导引策略实现路径跟踪,利用反步控制方法设计控制器以保证系统稳定性与跟踪精度,有效应对海洋环境中的外部干扰与模型不确定性。文中详细阐述了控制算法的设计过程、稳定性分析及仿真验证,展示了在复杂三维路径下的良好跟踪性能。; 适合人群:具备自动控制理论、非线性控制基础及Matlab/Simulink仿真能力的研究生、科研人员及从事水下机器人控制开发的工程技术人员。; 使用场景及目标:①用于水下无人航行器路径跟踪控制系统的算法设计与仿真验证;②学习LOS导引法与反步控制在非线性系统中的综合应用;③为海洋机器人运动控制、自动驾驶等领域提供技术参考与代码实现模板。; 阅读建议:建议结合控制理论基础知识,逐步理解LOS算法的几何原理与反步控制的递推设计思想,重点分析Lyapunov稳定性证明过程,并通过Matlab代码调试与仿真实验加深对算法性能的理解。

15,445

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧