图是数据结构中很重要的一部分内容,这里我给出了在图的相关应用中最常见的几个算法实现。
1.dfs搜索所有节点。
2.求两点间的最短路径(dijstra算法)
3.求两点间的最短路径(flyod算法)
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAXVEX 100
#define INFI 0x3f3f3f
typedef int VexType;
typedef int EdgType;
int visited[MAXVEX];
typedef struct
{
VexType Vexs[MAXVEX];
EdgType arc[MAXVEX][MAXVEX];
int vexnum,edgnum;
}MGraph;
void Create_Graph(MGraph &G)
{
int i,j,k,w;
cout<<"输入图的顶点数和边数"<<endl;
cin>>G.vexnum>>G.edgnum;
for(i=1;i<=G.vexnum;i++)
G.Vexs[i]=i;
for(i=1;i<=G.vexnum;i++)
for(j=1;j<=G.vexnum;j++)
G.arc[i][j]=INFI;
cout<<"输入顶点i,j,及它们间的权值:"<<endl;
for(k=1;k<=G.edgnum;k++)
{
cin>>i>>j>>w;
G.arc[i][j]=w;
G.arc[j][i]=w;
}
}
void dfs(MGraph G,int i)
{
int j;
visited[i]=1;
cout<<G.Vexs[i]<<endl;