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

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

...全文
117 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
  • 打赏
  • 举报
回复
使用邻接表和逆邻接表为存储结构,非常容易求度和连通性

15,440

社区成员

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

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