ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조...76
    일지 2021. 4. 13. 08:23

    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
    ----------------------

    댓글

Designed by Tistory.