#include<stdio.h>
#include<stdlib.h>
typedef char DataType;
typedef int SeqList;
#define MaxSize 10
#define MaxVertices 10
#define MaxWeight 10000
typedef struct{
SeqList Vertices;
int edge[MaxVertices][MaxVertices];
int numOfEdges;
}AdjMGraph;
void Initiate(AdjMGraph *G,int n){
int i,j;
for(i=0;i<n;i++){
if(i==j)
G->edge[i][j]=0;
else
G->edge[i][j]=MaxWeight;
}
G->numOfEdges=0;
ListInitiate(&G->Vertices);
}
void InsertVertex(AdjMGraph *G, DataType vertex){
ListInsert(&G->Vertices,G->Vertices.size,vertex);
}
void InserEdge(AdjMGraph *G,int v1;int v2,int weight){
if(v1<0||v1>G->Vertices.size||v2<0||v2>=G->Vertices,size){
printf("参数v1或v2越界出错!\n");
return ;
}
if(G->edge[v1][v2]==MaxWeight||v1==v2){
printf("该边不存在!\n");
return ;
}
G->edge[v1][v2]=MaxWeight;
G->numOfEdges--;
}
int GetFirstVex(AdjMGraph G,int v){
int col;
if(v<0||v>G.Vertices.size){
printf("参数v1越界出错!\n"):
return -1;
}
for(col=0;col<G.Vertices.size;col++)
if(G.edge[v][col]>0&&G.edge[v][col]<MaxWeight)
return col;
return -1;
}
int GetNextVex(AdjMGraph G,int v1,int v2){
int col;
if(v1<0||v1>=G.vertices,size||v2<0||v2>=G.Vertices.size){
printf("参数v1或v2越界出错!\n");
return -1;
}
for(col=v2+1;col<G.Vertices.size;col++)
if(G.edge[v1][col]>0&&G.edge[v1][col]<MaxWeight)
return col;
return -1;
}
typedef struct{
int row;
int col;
int weight;
}RowColWeight;
void CreatGraph(AdjMGraph *G,DataType V[],int n,RowColWeight E[],int e){
int i,k;
Initiate(G,n);
for(i=0;i<n;i++)
InsertVertex(G,V[i]);
for(k=0;k<e;k++)
InsertEdge(G,E[k].row,E[k].col,E[k].weight);
}
int main(){
AdjMGraph g1;
dataType a[]={'A','B','C','D','E'};
RowColWeight rcw[]={{0,1,10},{0,4,20},{1,3,30},{2,1,40},{3,2,50}};
int n=5,e=5;
int i,j;
CreatGrapah(&g1,a,n,rcw,e);
DeleteEdge(&g1,0,4);
printf("顶点集合为:");
for(i=0;i<g1.Vertices.size;i++)
printf("%c ",g1.Vertices.list[i]);
printf("\n");
printf("权值集合为:\n");
for(i<0;i<g1.Vertices.size;i++){
for(j=0;j<g1.Vertices.size;j++)
printf("%5d ",g1.edge[i][j]);
printf("\n");
system("pause");
}
}
图
最新推荐文章于 2022-04-25 02:06:51 发布