Try
[알고리즘/자료구조] 그래프 (Graph) -2- 인접행렬 구현 본문
소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | /* /* khsh5592@naver.com /* has3ong.tistory.com /* /* 2018 - 12 - 09 /* */ #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; class Graph { public: int matrix[5][5]; int row; int col; }; void initialize_Graph(Graph* G) { for(G -> row = 0; G -> row < 5; G -> row++) { for(G -> col = 0; G -> col < 5; G -> col++) { G -> matrix[G->row][G->col] = 0; } } } void add_Vertex(Graph* G, int data) { G -> row = 1; G -> col = 1; while(1) { if(G -> matrix[G -> row][0] == 0) { G -> matrix[G->row][0] = data; G -> matrix[0][G->col] = data; break; } G -> row = G -> row++; G -> col = G -> col++; } } void add_Edge(Graph* G, int row, int col, int data) { G -> matrix[row][col] = data; } void print(Graph* G) { for(G -> row = 0; G -> row < 5; G -> row++) { for(G -> col = 0; G -> col < 5; G -> col++) { cout << G -> matrix[G -> row][G -> col] << " "; } cout << endl; } } void main() { Graph* G = new Graph; initialize_Graph(G); add_Vertex(G, 1); add_Vertex(G, 2); add_Vertex(G, 3); add_Vertex(G, 4); add_Edge(G, 1, 2, 1); add_Edge(G, 1, 3, 2); add_Edge(G, 2, 1, 3); add_Edge(G, 2, 3, 4); add_Edge(G, 3, 1, 5); add_Edge(G, 3, 2, 6); add_Edge(G, 3, 4, 7); add_Edge(G, 4, 3, 8); print(G); getch(); } | cs |
결과화면
현재 포인터 공부하느라 규칙없이 불필요한 곳에도 포인터를 많이 사용했습니다.
양해부탁드립니다.
'Algorithm > Algorithm 기초' 카테고리의 다른 글
[알고리즘/자료구조] 그래프 (Graph) -1- 인접리스트 구현 (0) | 2018.12.09 |
---|---|
[알고리즘/자료구조] 해시 테이블(Hash Table) (0) | 2018.11.29 |
[알고리즘/자료구조] 우선순위 큐 (PriorityQueue) (0) | 2018.11.29 |
[알고리즘/자료구조] 힙 (Heap) (0) | 2018.11.29 |
[알고리즘/자료구조] 이진 탐색 트리 (Binary Search Tree) (0) | 2018.11.29 |
Comments