본문 바로가기
컴퓨터 이론/C언어 & 자료구조 & 알고리즘

30. 그래프 표현 방법

by 컴퓨터공부용 2023. 5. 3.

C언어에서는 다양한 방법으로 그래프를 표현한다.

 

우선 그래프를 표현할 때 주의해야 할 부분은 표현하려는 그래프가 가중치 그래프인지, 비 가중치 그래프인지를 확인해야 한다. 그리고 방향그래프인지, 무방향 그래프 인지를 확인해야 한다.

 

그래프를 표현하는 방법에는 2차원 배열을 이용하는 방법과 연결 리스트를 이용하는 방법이 존재한다.


2차원 배열을 이용한 표현 방법이다.

#include <stdio.h>

#define GRAPH_VERTEX_CNT 5

int Graph[GRAPH_VERTEX_CNT][GRAPH_VERTEX_CNT] = {0,};

void Add_Graph(int v1, int v2){
    Graph[v1][v2] = 1;
    Graph[v2][v1] = 1;
}

void Graph_Print(){
    int i, j;
    for(i=0;i<GRAPH_VERTEX_CNT;i++){
        for(j=0;j<GRAPH_VERTEX_CNT;j++)
            printf("%d ", Graph[i][j]);
        printf("\n");
    }
}

int main()
{
    Add_Graph(1, 3);
    Add_Graph(4, 2);
    
    Graph_Print();

    return 0;
}

위는 무방향 그래프, 비 가중치 그래프를 2차원 배열로 표현한 것이다.

 

만약 방향그래프라면 아래와 같이 변경하면 된다.

void Add_Graph(int v1, int v2){
    Graph[v1][v2] = 1;
}

가중치 그래프라면 아래와 같이 변화한다.

void Add_Graph(int v1, int v2, int w){
    Graph[v1][v2] = w;
    Graph[v2][v1] = w;
}

그래프에 정점과 간선을 추가하는 함수를 조금씩만 변형하면 배열을 이용한 그래프 표현은 쉽게 작성 가능하다.

'컴퓨터 이론 > C언어 & 자료구조 & 알고리즘' 카테고리의 다른 글

32. 최소비용 신장 트리  (0) 2023.05.11
31. 단절점  (0) 2023.05.10
29. 그래프  (0) 2023.05.03
28. 승자트리와 패자트리  (0) 2023.05.02
27. Union Find  (0) 2023.04.13

댓글