1讲评--图程序.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1002:求顶点的出度 ?Problem Description 设有一有向图G,采用邻接表存储,输入某一顶点的存储编号(下标),现要求设计一个函数,用于输出图中该顶点的出度。 ?Input 有多组测试数据,每组数据的第一行表示图的顶点数n和图的边数e(0n20);第二行表示各顶点的值,按输入顺序进行存储;后面有e行,每一行表示每条边所依附的顶点的存储编号(下标),两个下标之间用空格隔开;最后一行表示要处理的顶点的存储编号(下标)。 ?Output 输出指定顶点的出度值;若指定的顶点不存在,则输出“not exist”。 ?Sample Input 4 4 ABCD 0 1 0 2 2 3 3 0 0 ?Sample Output 2void ALGraph::OutDegree(int v) { if(v=vertexNum||v0) { coutnot existendl; return; } else { int ds=0; ArcNode *p; p=adjlist[v].firstedge; while(p) { ds++; p=p-next; } coutdsendl; } } #includeiostream #includestring using namespace std; struct Bian { int i; Bian *next; }; struct Din { char c; Bian *first; }; class Gragh { Din a[25];//定义结构体数组时不要加*号 int num1,e; public: Gragh(int n,int m,char s[]); void fun(int l); }; Gragh::Gragh(int n,int m,char s[]) { int k; int i,j; num1=n; e=m; for(k=0;kn;k++) { a[k].c=s[k]; a[k].first=NULL; } for(k=0;ke;k++) { cinij; Bian *t=new Bian; t-i=j; t-next=a[i].first; a[i].first=t; } } void Gragh::fun(int l) { Bian *t=a[l].first; int num=0; while(t) { num++; t=t-next; } coutnumendl; } int main() { int n,m; char c[25]; int l; while(cinnm) { cinc; Gragh t(n,m,c); cinl; if(l=n||l0)//注意判断找不到顶点的情况,下标 coutnot existendl; else t.fun(l); } return 0; } 1003:邻接矩阵转为邻接表 ?Problem Description 设有向图G,现给出其邻接矩阵,要求将其转化为邻接表(采用头插法存边)进行存储。 ?Input 输入数据有多组 每组数据第一行为一个正整数n(0n=50),代表G的顶点数目 接下来有n行,为有向图G的邻接矩阵 ?Output 对于每组数据,输出有若干行,为该有向图中所有顶点的出边信息(空表不输出任何信息),每行最后均无空格,每两组数据之间有一空行,具体格式见样例。 ?Sample Input 3 0 0 1 0 0 0 1 0 0 4 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 ?Sample Output 0-2 2-0 0-3-1 1-2-0 2-3-0 ALGraph::ALGraph(int a[20][20], int n) { vertexNum=n; //顶点数 int i,j,k=0; for (i=0; ivertexNum; i++) adjlist[i].firstedge = NULL; for (i=0; ivertexNum; i++) for(j=0; jvertexNum; j++) if(a[i][j]==1) { ArcNode *s=new ArcNode; s-adjvex=j;

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档