8.3.1 프림 알고리즘에 사용할 그래프 구현

프림 알고리즘을 구현하기 전에 그래프 알고리즘에 몇 가지 함수를 추가하기로 해요.

먼저 정점의 개수를 구하는 함수를 제공하기로 해요.

int Graph_GetVtCnt(Graph *graph);

그리고 그래프의 맨 앞에 있는 정점을 구하는 함수도 제공해요.

Vertex Graph_GetFront(Graph *graph);

마지막으로 간선에 특정 정점을 끝점으로 하는지 판별하는 함수를 제공하기로 해요.

int Edge_Include(Edge *edge,Vertex pt);

정점의 개수를 구하는 함수는 단순히 그래프에 있는 정점 컬렉션의 개수를 반환하게 구현하세요.

int Graph_GetVtCnt(Graph *graph)
{
    return graph->vertexs->usage;
}

그래프의 맨 앞에 있는 정점을 구하는 함수에서는 정점 컬렉션의 시작 위치의 정점을 반환하세요.

Vertex Graph_GetFront(Graph *graph)
{
    Iterator front = Array_Begin(graph->vertexs);
    return (Vertex)front[0];
}

간선에 특정 정점을 끝점으로 하는지 판별하는 함수에서는 두 개의 끝점과 비교한 결과를 반환하겠죠.

int Edge_Include(Edge *edge,Vertex pt)
{
    return (strcmp(edge->ep1,pt)==0)||(strcmp(edge->ep2,pt)==0);
}