데이터 구조 (11): 그림 의 저장 방식 (인접 행렬, 인접 표...)
6895 단어 데이터 구조
/* */
#include
using namespace std;
#define MAXVEX 100 // ( )
#define INFINITY 65535 // 66535 ' '
typedef char VertexType; // ( )
typedef int EdgeType; // ( )
//
typedef struct
{
VertexType vexs[MAXVEX]; //
EdgeType arc[MAXVEX][MAXVEX]; //
int numVertexes, numEdges; //
} MGraph;
/* */
void CreateMGraph(MGraph *G)
{
int i,j,k,w;
cout<<" :";
cin>>G->numVertexes>>G->numEdges;
//
for(i=0; inumVertexes; i++)
cin>>G->vexs[i];
//
for(i=0; inumVertexes; i++)
for(j=0; jnumVertexes; j++)
G->arc[i][j] = INFINITY;
//
for(k=0; knumEdges; k++)
{
cout<<" (vi,vj) i j w:";
cin>>i>>j>>w;
G->arc[i][j] = w;
G->arc[j][i] = G->arc[i][j]; // ,
}
}
/* */
#include
using namespace std;
#define MAXVEX 100 // ( )
typedef char VertexType; // ( )
typedef int EdgeType; // ( )
// ( )
typedef struct EdgeNode
{
int adjvex; // ,
EdgeType weight; //
struct EdgeNode *next; // ,
} EdgeNode;
// ( )
typedef struct VertexNode
{
VertexType data; // ,
EdgeNode *firstedge; //
} VertexNode, AdjList[MAXVEX];
//
typedef struct
{
AdjList adjList;
int numVertexes,numEdges; //
} GraphAdjList;
/* */
void CreateALGraph(GraphAdjList *G)
{
int i,j,k;
EdgeType w;
EdgeNode *e;
//
cout<<" :";
cin>>G->numVertexes>>G->numEdges;
//
cout<<" :"<for(i=0; inumVertexes; i++)
{
cin>>G->adjList[i].data;
G->adjList[i].firstedge = NULL; //
}
//
cout<<" (vi,vj) :"<for(k=0; knumEdges; k++)
{
cin>>i>>j>>w;
e = new EdgeNode; //
e->adjvex = j; // j
e->weight = w; // w
e->next = G->adjList[i].firstedge; //
G->adjList[i].firstedge = e; //
e->adjvex = i; // i
e->weight = w; // w
e->next = G->adjList[j].firstedge; //
G->adjList[j].firstedge = e; //
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.