?? about-tu.cpp
字號:
#include <iostream.h>
#include <stdlib.h>
#define INFINITY 0
#define MAX_VERTEX_NUM 10 //最大頂點數
#define MAX_EDGE_NUM 40 //最大邊數
typedef enum {DG,DN,UDG,UDN}Graphkind;//{有向圖,有向網,無向圖,無向網} 書p161
typedef char VertexType; //頂點數據類型
typedef struct ArcCell
{
int adj; //無權圖,1或0表示相鄰否;帶權圖則是權值。
//int *info;
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
VertexType vexs[MAX_VERTEX_NUM]; //頂點向量
AdjMatrix arcs; //鄰接矩陣
int vexnum,arcnum; //圖的當前頂點數和弧數。
Graphkind kind;
}MGraph;
int LocateVex(MGraph G,VertexType v1)
{
int i;
for(i=0;i<G.vexnum;i++)
if(G.vexs[i]==v1)
return i;
return -1;
}
int CreatUDN(MGraph &G)
// 采用數組表示法,構造無向網 G
{
VertexType v1,v2;
int w,j;
cout<<"輸入圖的頂點數"<<endl;
cin>>G.vexnum;
cout<<"輸入圖的弧數"<<endl;
cin>>G.arcnum;
for(int i=0;i<G.vexnum;i++)
{
cout<<"輸入頂點向量"<<endl;
cin>>G.vexs[i];
}
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
{
G.arcs[i][j].adj=INFINITY;
}
for(int k=0;k<G.arcnum;++k) //構造鄰接矩陣
{
cout<<"輸入邊依附的兩個頂點"<<endl;
cin>>v1>>v2;
cout<<"輸入此邊的權值"<<endl;
cin>>w;
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G.arcs[i][j].adj=w;
G.arcs[j][i].adj=G.arcs[i][j].adj;
}
return 1;
}
void dispMGraph(MGraph G)
{
cout<<"圖的鄰接矩陣圖是:"<<endl;
for(int i=0;i<G.vexnum;i++)
{
for(int j=0;j<G.vexnum;j++)
cout<<" "<<G.arcs[i][j].adj;
cout<<endl;
}
}
void main()
{
MGraph G;
CreatUDN(G);
dispMGraph(G);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -