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

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;
}
}
}

...全文
153 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
  • 打赏
  • 举报
回复
使用邻接表和逆邻接表为存储结构,非常容易求度和连通性
代码下载链接: https://pan.quark.cn/s/feb6394ba113 放射性核素衰变查询软件“decay”是一款为核物理学领域设计的专用工具,其功能在于提供全面的放射性核素衰变信息,涵盖了衰变链、分支比等核心数据。该软件特别适合科研人员、工程师以及关注核能或放射性物质的用户群体。在深入探讨这款软件之前,有必要先掌握放射性核素的基础知识。放射性核素定义为不稳定的原子核,由于质子与中子数量失衡,会自发触发核反应,释放能量及/或产生新粒子,此现象即为核衰变。常见的核衰变形式包含α衰变、β衰变(涵盖β+衰变与β-衰变)、γ衰变和电子俘获等。每一种衰变类型都关联着特定的能量释放和新生成的核素。“decay”软件的主要作用是进行衰变链的查询。衰变链描述的是一个放射性核素通过一连串连续的衰变步骤,最终转变为非放射性核素的现象。比如,铀-238会经由多次α和β衰变,最终转化为铅-206。该软件能够呈现这些衰变链的详尽资料,助力用户追踪并解析这一过程。分支比反映了衰变过程中各个可能途径的概率,即一个放射性核素在发生衰变时选择特定路径的可能性。分支比对于解析衰变过程中的能量分布和产物生成具有决定性意义,特别是在核能开发、环境检测和医疗领域中不可或缺。这款软件的运行环境设定在Windows XP系统,这表明它可能依赖于较早期的API和库,而这些在现代操作系统上可能存在兼容性问题。对于那些仍在使用或研究老旧系统的人员而言,“decay”是一份极具价值的参考资料。放射性核素的应用遍及多个领域,包括医学上的放射性同位素疗法、地质学中的年代测定、能源产业中的核反应堆构建以及环境科学里的污染物追踪等。“decay”软件所提供的数据能够协助专业人士精确计算和预估放射性物质的特性...

15,446

社区成员

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

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