设为首页 加入收藏

TOP

图的邻接矩阵存储结构
2015-07-20 17:34:12 来源: 作者: 【 】 浏览:2
Tags:邻接 矩阵 存储 结构

\

如上图,我们可以把v0标记为0,v1标记为1。。。。

并把联通的2点权值全设置为1,那么可以用邻接矩阵(右图)来表示<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+uMXE7r3izvajujwvcD4KPHA+tdrSu7j2wdq907alteOjujwvcD4KPHA+ztLDx9LUdm/OqsD9o6y12tK7uPbB2r3TtqW1486qVjGjqMbkyrXSsr/J0tTKuVYzo6zWu7K7uf2/vMLHvMbL47v6tcS05rSiy7PQ8qOsztLDx9XSwdq907alteOjrNK7sOPKx7TTdjDJqMPotb12M6Osy/nS1M7Sw8fPyNTaxNq05tbQyajD6LW9djGjqTwvcD4KPHA+z8LSu7j2wdq907alteOjujwvcD4KPHA+ztLDx9LUdjDOqsD9o6zPwtK7uPbB2r3TtqW1477Nysd2M6OozazR+aOsxuTKtdKyv8nS1Mq5VjGjrNa7sru5/b+8wse8xsvju/q1xLTmtKLLs9Dyo6zO0sPH1dLPwrj2wdq907alteOjrNK7sOPKx7TTdjLJqMPotb12M6Os1q7L+dLUtNN2Msmow+jG8KOsxMfKx9LyzqqjrFYx0tG+rcrHtdrSu7j2wdq907altePBy6OsxMfDtM/C0ru49sHavdO2pbXj0ru2qMrH1NrE2rTm1tC05rSi1NpWMbrztcTK/b7dwcujqTwvcD4KPHA+PGJyPgo8L3A+CjxwPs7ez/LNvMHavdO+2NXztcTM2LXjo7o8L3A+CjxwPrbUvcfP38ioJiMyMDU0MDvKxzA8L3A+CjxwPs7ez/LNvL7Y1fO52NPa0LHP37bUs8ajqNPQz/LNvLK7ttSzxqOpPC9wPgo8cD48YnI+CjwvcD4KPHA+tPrC68jnz8KjujwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">#include using namespace std; #define VertexSize 10 typedef struct { int weight[VertexSize][VertexSize]; //表示2个顶点之间的权值 int edgenum; //表示图的边数目 }Graph; //初始化图 void Initiate_Graph(Graph *g,int n) { int i,j; g->edgenum=0; for(i=0;i weight[i][j]=0; //对角线表示顶点自己到自己,权值为0 else g->weight[i][j]=0x7fff; //其他权值初始化为无限大 } } //插入边 void InsertEdge(Graph *g,int v,int w,int weight,int n) { if(v<0 || v>=n||w<0||w>=n) { cout<<"overflow!"< weight[v][w]=weight; g->edgenum++; } //取得点V的第一个临接顶点 int GetFirstVertex(Graph *g,int v,int n) { if(v<0||v>=n) { cout<<"overflow"< weight[v][i])>0 )&&( (g->weight[v][i])<0x7fff) ) return i; } return -1; } //取得顶v的下一个邻接顶点 int GetNextVertex(Graph *g,int v,int w,int n) { if(v<0||v>=n||w<0||w>=n) { cout<<"overflow"< weight[v][i])>0 )&& ((g->weight[v][i])<0x7fff )) return i; } return -1; } //删除边 void DeleteEdge(Graph *g,int v,int w,int n) { if(v<0||v>=n||w<0||w>=n||v==w) { cout<<"error"< weight[v][w]=0x7fff; g->edgenum--; } void PrintGraph(Graph *g,int n) { int y,x,i; for(i=0;i >n; cout<<"请输入图的边个数"< >edge; Initiate_Graph(&g,n); int i,p1,p2,weight; cout<<"请输入顶点-顶点-权值:"< >p1>>p2>>weight; InsertEdge(&g,p1,p2,weight,n); } PrintGraph(&g,n); cout<<"输入需要删除的边:"< >e1>>e2; DeleteEdge(&g,e1,e2,n); cout<<"删除后边的数目为:"<

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces 97B Superset 平面分治 下一篇HDU-2857-Mirror and Light(计算..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)