옵션 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | graph_list_type *cvt_garray2glist(graph_array_type *g) { int i, j; graph_list_type temp; // 임시 인접 리스트 graph_init(&temp); // 리스트 초기화 for (i = 0; i < g->n; i++) { insert_vertex(&temp, i); // 정점 추가 // temp.n = g->n과 같음 } for (i = 0; i < g->n; i++) { for (j = 0; j < g->n; j++) { if (g->a[i][j] == 1) { // 인접 행렬에서 두 정점이 이어져있을 경우 insert_edge(&temp, i, j); // 인접 리스트의 두 정점에 간선 삽입 } } } return &temp; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int main(void) { // 0 1 2 3 4 5 6 7 8 9 graph_array_type g = { 10,{ { 0, 1, 0, 0, 0, 0, 0, 0, 0 ,0 }, // 0 { 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, // 1 { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 }, // 2 { 0, 1, 0, 0, 1, 1, 0, 0, 0, 0 }, // 3 { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, // 4 { 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 }, // 5 { 0, 0, 0, 0, 0, 1, 0, 1, 0, 0 }, // 6 { 0, 0, 0, 0, 0, 1, 1, 0, 1, 1 }, // 7 { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, // 8 { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } } };// 9 graph_list_type list_g; // 인접 리스트로 표현된 그래프 graph_init(&list_g); // 인접 리스트 초기화 printf("────────────리 스 트──────────── \n"); list_g = *cvt_garray2glist(&g); // 인접 행렬을 이용한 그래프에서 // 인접 리스트를 이용한 그래프로 변환 print_alist(&list_g); // 인접 리스트로 표현된 그래프 표시 return 0; } | cs |