데이터 구조 - 그림 - C 언어 - 인접 표
#include
#include
#define Max 100
typedef int Vertex;
typedef int WeightType;
/**
*
* @author Caedios
* @attr v1 v1, v1->v2
* @attr v2 v2, v1->v2
* @attr weight
*
*/
struct ENode {
Vertex v1, v2;
WeightType weight;
};
typedef struct ENode * pENode;
/**
*
* @author Caedios
* @attr subNum
* @attr weight
* @attr pVNode
*
*/
struct VNode {
Vertex subNum;
WeightType weight;
pVNode nextVNode;
};
typedef struct VNode * pVNode;
/**
*
* @author Caedios
* @attr headVNode
*
*/
struct HeadVNode {
pVNode headVNode;
};
typedef struct HeadVNode AdjList[Max];
/**
*
* @author Caedios
* @attr numVertex
* @attr numEdge
* @attr adjList
*
*/
struct Graph {
int numVertex;
int numEdge;
AdjList adjList;
};
typedef struct Graph * pGraph;
pGraph createGraph(int vertexNum) {
Vertex v;
pGraph graph;
graph = (pGraph)malloc(sizeof(struct Graph));
graph->numVertex = vertexNum;
graph->numEdge = 0;
for (v = 0; v < graph->numVertex; v++)
graph->adjList[v].headVNode = NULL;
return graph;
}
pGraph insertGraph(pGraph graph,pENode edge) {
pVNode newNode = (pVNode)malloc(sizeof(struct VNode));
newNode->subNum = edge->v2;
newNode->weight = edge->weight;
newNode->nextVNode = graph->adjList[edge->v1].headVNode;
graph->adjList[edge->v1].headVNode = newNode;
return graph;
}
pGraph buildGraph() {
pGraph graph;
pENode edge;
int vertexNum;
scanf("%d", &vertexNum);
graph = createGraph(vertexNum);
scanf("%d", graph->numEdge);
if (graph->numEdge > 0) {
edge = (pENode)malloc(sizeof(struct ENode));
for (int i = 0; i < graph->numEdge; i++) {
scanf("%d %d %d", edge->v1, edge->v2, edge->weight);
insertGraph(graph, edge);
}
}
return graph;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.