【数据结构】图结构操作示例
2015-12-07 18:38
471 查看
#include<iostream> #include<cstring> #include<queue> #include<stack> #include<cstdio> #define MAXNUM 20 #define MAXVALUE 65535 using namespace std; typedef struct{ //char vertex[MAXNUM][MAXNUM]; char vertex[MAXNUM][MAXNUM]; int GType; int vertexNum; int edgeNum; int edgeWeight[MAXNUM][MAXNUM]; int travel[MAXNUM]; }GraphMatrix; void CreatGraph(GraphMatrix *GM){ //创建邻接矩阵 int i,j,k; int weight; char Estart, Eend; cout<<"输入图中各顶点信息\n"; for(i=0 ; i<GM->vertexNum; i++){ getchar(); cout<<"第"<<i+1<<"个顶点:"; cin>>GM->vertex[i]; } cout<<"输入构成个边的顶点以及权值:\n"; for(k=0; k<GM->edgeNum; k++){ getchar(); cout<<"第"<<k+1<<"条边:"; cin>>Estart>>Eend>>weight; for(i=0; &Estart!=GM->vertex[i]; i++); //在已有的顶点中查找实点 for(j=0; &Eend!=GM->vertex[j]; j++); //在已有的顶点中查找终点 GM->edgeWeight[i][j]= weight; if(GM->GType==0){ GM->edgeWeight[i][j]=weight; } } } void ClearGraph(GraphMatrix * GM){ int i,j; for(i=0; i<GM->vertexNum; i++){ for(j=0; j<GM->vertexNum; j++){ GM->edgeWeight[i][j]==MAXVALUE; } } } void OutGraph(GraphMatrix * GM){ int i,j ; for(j=0 ; j<GM->vertexNum; j++){ cout<<GM->vertex[j]; } cout<<"\n"; for(i=0 ; i<GM->vertexNum; i++){ cout<<GM->vertex[i]; for(j=0; j<GM->vertexNum; j++){ if(GM->edgeWeight[i][j]==MAXVALUE){ cout<<"\tZ"; } else{ cout<<GM->edgeWeight[i][j]; } } cout<<"\n"; } } void DeepTraOne(GraphMatrix * GM , int n){ int i; GM->travel =1; cout<<GM->vertex ; for(i=0; i<GM->vertexNum; i++){ if(GM->edgeWeight [i]!=MAXVALUE&&!GM->travel ){ DeepTraOne(GM,i); } } } void DeepTraGraph(GraphMatrix * GM){ int i ; for(i=0; i<GM->vertexNum; i++){ GM->travel[i]=0; } cout<<"深度优先遍历结点:"; for(i=0; i<GM->vertexNum; i++){ if(!GM->travel[i]){ DeepTraOne(GM, i); } } cout<<endl; } int main(){ GraphMatrix GM; cout<<"输入生成图的类型: "; cin>>GM.GType; cout<<"输入图的顶点数量:"; cin>>GM.vertexNum; cout<<"输入图的边数量: "; cin>>GM.edgeNum; ClearGraph(&GM); CreatGraph(&GM); cout<<"该图的邻接矩阵如下:\n"; OutGraph(&GM); DeepTraGraph(&GM); return 0; }
相关文章推荐
- 【第15周-项目2-1 ——用哈希法组织关键字(处理冲突的方法采用线性探测法)】
- 第十二周--数据结构-迷宫之图的深度优先遍历
- 2015-12-7 项目2—用哈希法组织关键字
- 2015-12-7 项目1—(3)希尔排序
- 2015-12-7 项目1—(2)直接插入排序
- 2015-12-7 项目1—哈希表及其运算的实现
- 2015-12-7 项目1—数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 2015-12-7 迷宫问题之图深度优先遍历解法
- *第十五周*数据结构实践项目三【B-树的基本操作】
- *第十五周*数据结构实践项目二【用哈希法组织关键字】
- 【第15周-查找项目1 - 验证哈希表实施查找的相关算法】
- 数据结构实践——拓扑排序算法验证
- 数据结构实践——Floyd算法验证
- *第十五周*数据结构实践项目一【验证哈希表及其算法】
- 数据结构实践——Dijkstra算法的验证
- 【项目3 - B-树的基本操作】
- 数据结构实践——Kruskal算法的验证
- 第9周SHH数据结构-【项目2-对称矩阵压缩存储的实现与应用】
- 项目2 - 用哈希法组织关键字
- 实验八.字符串排序