关于图的邻接表C++实现
2015-04-14 10:17
211 查看
first数组的1-n号单元格分别用来存储1-n号顶点的第一条边的编号,初始的时候因为没有边加入所有都是-1.即first[u[i]]保存顶点point1[i]的第一条边的编号,next[i]存储“编号为i的边”的“下一条边”的编号。
next[i]=first[point1[i]];//first[]存储的是顶点的编号
first[point1[i]]=i;//next[]存储的是第i条边的下一条边的编号
4 5
1 4 9
2 4 6
1 2 5
4 3 8
1 3 7
读入第1条边后1 4 9
first next
1 -1
-1
-1
-1
读入第2条边后2 4 6
first next
1 -1
-1 -1
-1
2
读入第3条边后1 2 5
first next
3 1
-1 -1
-1 1
2
读入第4条边后4 3 8
first next
3 1
4 -1
-1 1
2 -1
读入第5条边后1 3 7
first next
5 -1
4 -1
-1 1
2 -1
3
next[i]=first[point1[i]];//first[]存储的是顶点的编号
first[point1[i]]=i;//next[]存储的是第i条边的下一条边的编号
4 5
1 4 9
2 4 6
1 2 5
4 3 8
1 3 7
读入第1条边后1 4 9
first next
1 -1
-1
-1
-1
读入第2条边后2 4 6
first next
1 -1
-1 -1
-1
2
读入第3条边后1 2 5
first next
3 1
-1 -1
-1 1
2
读入第4条边后4 3 8
first next
3 1
4 -1
-1 1
2 -1
读入第5条边后1 3 7
first next
5 -1
4 -1
-1 1
2 -1
3
#include<iostream> using namespace std; int main() { int points,edgs; cin>>points>>edgs; int point1[6],point2[6],quanzhi[6]; int first[5],next[5];//数组的大小要比实际的点数要大1 for (int i=1;i<=points;i++) { first[i]=-1; } int p1,p2,w; for (i=1;i<=edgs;i++) { cin>>p1>>p2>>w; point1[i]=p1; point2[i]=p2; quanzhi[i]=w; next[i]=first[point1[i]];//first[]存储的是顶点的编号 first[point1[i]]=i;//next[]存储的是第i条边的下一条边的编号 } int k=first[1]; while (k!=-1) { cout<<point1[k]<<" "<<point2[k]<<" "<<quanzhi[k]<<endl; k=next[k]; } }
相关文章推荐
- 关于C/C++程序里如何实现模糊查找
- 关于Platinum库的MediaRender具体C++代码实现探讨
- 关于逆波兰式的c++实现
- C++中关于虚函数接口继承与实现继承的讨论
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- C++中关于委派(Delegates)的实现示例
- 最小生成树Prim算法实现(采用邻接表存储)C++实现
- 关于用C++实现带约束条件的类型
- 关于如何实现C++跨平台的一些想法
- 图的邻接表 表示 DFS 和BFS C++实现
- 关于C++的头文件.h和.cpp(实现类)文件
- 关于二叉树的层次遍历的花样(c++实现)
- 关于电梯算法的C++实现(zt)
- 关于邻接表实现适用两种深搜(DFS)和广搜(BFS)的代码
- C++ 链表实现通讯录 (关于获取鼠标句柄后,清屏不能再次获取)
- 关于c++多态性实现的理解过程(给自己看的总结,比较跳跃)
- [C++]queue简单实现--关于模板
- C++实现图的邻接表
- 数据结构与算法——图的邻接表表示法类的C++实现
- 关于“在21天内精通C++”的实现原理图!中英对照,保证人人看懂