-
ArrayGraph 기본 구조)
생성자, 소멸자, 테스트용 출력 메서드를 구현한다.
ArrayGraph.h
#pragma once #include <iostream> class ArrayGraph { public: #pragma region 생성자 ArrayGraph(size_t nodeCapacity = 5); ~ArrayGraph(); #pragma endregion #pragma region 속성 size_t NodeCapacity() { return m_nodeCapacity; } size_t NodeCount() { return m_nodeCount; } #pragma endregion #pragma region 메서드 void InsertNode(); void InsertEdge(int from, int to); void RemoveNode(int index); void RemoveEdge(int from, int to); void Clear(); size_t GetDegreeIn(int index); size_t GetDegreeOut(int index); void PrintInfo(); #pragma endregion private: #pragma region Class Util #pragma endregion #pragma region 변수 size_t m_nodeCapacity; size_t m_nodeCount; int** m_graph; #pragma endregion };
ArrayGraph.cpp
#pragma region 생성자 /// <summary> /// 지정된 크기 혹은 기본 크기의 ArrayGraph를 생성한다. /// </summary> /// <param name="nodeCapacity">생성할 그래프의 크기(기본:5)</param> ArrayGraph::ArrayGraph(size_t nodeCapacity) : m_nodeCapacity(nodeCapacity), m_nodeCount(0) { m_graph = new int* [nodeCapacity]; for (int i = 0; i < nodeCapacity; i++) { m_graph[i] = new int[nodeCapacity]; std::fill_n(m_graph[i], nodeCapacity, 0); } } /// <summary> /// 메모리 누수를 막기 위해 동적 생성한 노드들을 제거한다. /// </summary> ArrayGraph::~ArrayGraph() { for (int i = 0; i < m_nodeCapacity; i++) { delete[] m_graph[i]; } delete[] m_graph; } #pragma endregion #pragma region 메서드 /// <summary> /// 테스트용 리스트 정보 출력 함수 /// </summary> void ArrayGraph::PrintInfo() { std::cout << "----------------------\n"; for (int i = 0; i < m_nodeCapacity; i++) { for (int j = 0; j < m_nodeCapacity; j++) { std::cout << ' ' << m_graph[i][j] << ' '; } std::cout << '\n'; } std::cout << "----------------------\n\n"; } #pragma endregion
main.cpp
#include <iostream> #include "Graph/ArrayGraph.h" // 생성한 자료구조 테스트용 메인 int main() { ArrayGraph graph; graph.PrintInfo(); }
실행결과
---------------------- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ----------------------